Coding Blocks - Dev Talk: Django, VB vs C#, and Bash on Windows
Episode Date: April 19, 2016This week on Coding Blocks, Joe changes a different kind of string, Allen drools over the Hellcat, and Michael shares his random thoughts. We span a collection of topics including GraphQL framework en...vy, bash on Windows, and whether it takes two to Django.
Transcript
Discussion (0)
you're listening to coding blocks episode 41 subscribe to us and leave us a review on itunes
stitcher and more using your favorite podcast app visit us at codingbox.net we can find show notes
examples discussion and more send your feedback questions and rants to comments at codingbox.net
follow us on twitter at coding blocks or head to www.codingblocks.net and find all our social links there at the top of the page.
With that, I'm Alan Underwood. I'm Joe Zack. And I'm Michael Outlaw. This episode is sponsored by
Infragistics, technology modernization and migration. When faced with the challenge of
any technology migration for modernization, like a desktop or web or mobile initiative,
product teams often consider
only the obvious technical challenges associated with something like the browser-based display.
You need to go beyond the obvious and get to a deeper level of understanding of the pitfalls
and challenges in major technology migrations. Infragistics experts can help you with their tools
and process to ensure your next major projects are a success. Head over to www.infragistics experts can help you with their tools and process to ensure your next major projects are a success.
Head over to www.infragistics.com and get started with your free 30-day trial.
All right, so let's get into our podcast news, right?
So first off, got to say, lots of love on iTunes, this go-around, lots of reviews.
You know how I am about pronouncing some of these names. I don't know if you want me to be the guy to do this because it starts off actually it's
been a while okay thanks and there's one in here in particular i want you to say okay well the first
one is the one that has me like a sir i can't even do that one. Sartavious? Okay, thank you.
Herp Derpington is definitely my favorite of them.
Dre Young, he's in there.
Terrence Hall, Bill Kron, Bayrock.
Yeah, I'm that cat.
Neil Code, J.
J.
Guile, Toga.
Now you got me on that one.
Balchie.
Okay, thank you.
Benevolently.
Well, that one didn't come out right at all.
It's in there.
And Derek Husky.
Yes, thank you.
Yeah, I know Dre Young.
Yeah, Dre Young's amazing.
He's always in Slack.
Yeah, dropping the knowledge.
Yeah, if you want to interact with with him definitely come join our slack channel
he's he's awesome so i'm gonna make joe do the stitcher reviews all right we got eigensbro which
is another one from the slack right yep awesome he's in there uh dominic and ranger yes and by
the way what of those all the reviews were amazing thank you for taking the time to write them up. But I especially like the fact that we were the cheese
that wraps the pill that is programming,
and that is the delivery mechanism to trick him into enjoying learning.
Well, I mean, in this go-around of reviews,
and this isn't the first time this has happened,
but there were some of these reviews where they purposely installed itunes just to take the time so like that's really going out of your
way and we super appreciate it can't and can't express how much we appreciate that and you know
there's another place we don't talk about this one as much but occasionally i'll go poke around
to see like what kind of love we're getting on Reddit. There was some action there, too, of people mentioning the podcast.
I thought, surely we should mention these guys, too.
Totally agree.
Alan, it's your turn.
All right.
We've got Ronage, Carlos Machina, or Machina, depending on how you want to go about that,
Blue Jean, Scrambled RK, Tells, and Tom5171.
So a big thanks to you guys
for sharing the love out there on Reddit.
Yeah, so we got some interesting questions
that came in this time,
so I thought we would start off with some of those.
And the first one I have here is from Chris,
and he's got two questions,
so we're going to take these in two separate parts, right?
So he's just starting to get into programming, and he's finding the nuances about coding that we go over to be very helpful.
That's scary.
But he's starting off easy learning Python and hopes to move on to Django and wants to know if we think Django
would be the correct framework for him to step into next in his learning,
you know,
path.
Right.
And you know,
he wants to create a simple reporting tool for,
from a MySQL database that he has set up and,
you know,
his GUI would consist of drop down menus to run queries on that MySQL
database but he wants to hide the MySQL guts of that away from the end user and wants to know
our thoughts so my first thought there is just to hearing the problem space my first inclination is
just oh Ruby on Rails but I think knowing Python and the little little bit i know about django it's it's kind of like a
why not you know ruby on rails has definitely got the uh it's probably the biggest name in that sort
of space right now but with django being so similar and even python and ruby being so similar
um you know i i yeah basically why not so i think django sounds like it could be a really great
choice i know a lot of people really like it and use it. So more power to you.
Yeah, I was going to say, I think he stumbled onto a good pair.
You know, like if he's already working on Python, then go for it.
Django sounds like a good fit.
Yeah, I completely agree.
I mean, with that, I guess my take is if he's enjoying Python and he wants to take it to that next level and learning a popular framework
like that's a is a huge step in the right direction but whatever's going to make him feel
like going through and finishing his project right so if django is going to help him do that and and
he's going to enjoy it and it's going to give him the passion that he needs to drive forward with
that then i say that's a definite yes right like choose things that are going to
make you want to do them right so yeah i mean i would say that i would hope that that wouldn't
you mean that he's not going to focus any time on javascript for example right i mean obviously if
it's going to be uh you know a web app then there's going to be some kind of client side
focus to it javascript is probably going to come in handy so it's probably going to be some kind of client-side focus to it. JavaScript is probably going to come in handy,
so it's probably going to be a good skill to pick up.
And you can't go wrong with it these days.
But there's a lot of love for Python.
And the people that do love it are very adamant about it.
Yeah, and you are going to end up learning JavaScript,
so you might as well stick with the server language
that you're familiar with.
Yeah, and I was kind of curious, you know,
where you guys might go with that,
like if you guys would jump on a Node bandwagon from a server-side point of view.
But, yeah, I think Python from a server-side would be okay.
I don't see a problem with that.
I mean, I've definitely shown some love towards Node lately,
but there's no reason I wouldn't jump on Python or Ruby on Rails or any of those either.
So I think as long as it's
something that's a passion that drives you, or if you're trying to learn something to get you into
a particular place in your market, you know, as long as those two things align with whatever
you're trying to do, then yeah, straight up, go for it. Yeah. So the second part of his question,
though, is, you know, any resume or career is any resume or career advice and helpful tips about being a programmer and what to expect and how to break into the development side, where to go from there, right?
User groups, GitHub, podcasts.
Done.
The user groups are huge. definitely get involved with some user
groups not only not only because of the learning aspect of of hearing what the topics are and
hearing you know like literally firsthand like people right there in front of your face telling
you about the experiences that they're having but but just from a networking perspective, you know, the user groups are a huge,
can be a huge benefit to you,
assuming that you have some user groups
available in your area.
Yeah, and I think what he's also doing
with wanting to get into the Django project as well,
like, you know, potentially putting that thing
out on GitHub.
If it's not something that you care,
you know, about open sourcing
and showing
other people your work, that's a good way to get into it. And having like a resume, an online
resume to where you can show kind of what you've done, that's that can be big. And then the other
thing I'll say is a lot of times data analysts, I've seen this in a couple different companies,
they're really close to the applications already a lot
of times so maybe if you spend some some of your personal time trying to write like maybe little
utilities to maybe massage that data or something and then and then slowly bring that into the fold
at your job then somebody could see hey this guy's got some skills let's see if we could pull him
into a more development centric type role you know i've
seen that happen so that's that's not a bad approach either and granted that depends on
the company that you're with like who knows we don't know the the insights as to whether or not
that is a possibility but you know that's that's something to think about all right so our next question comes in and joe writes in says that he has done 80
percent of vb and vb.net and 20 c i assume he means in his entire career but he wants to know
is there a reason he should migrate to c sharp since we've never mentioned anything about vb
and would he get more
functionality or performance than what he gets from VB net yep and I am a C
sharp snob I'll admit it I you know kind of scarred by old VB 6 I just thought it
was kind of really ugly and so even though I know a lot of the problems are
fixed with VB dotnet I just can't get into it and i feel like that's a feeling that's shared with a lot of people so i think
it's kind of left a bad taste in a lot of people's mouths and so um you know maybe i'm just
spoiled i guess but um you know when i especially when i think about things like the link syntax i
think c sharp is just really sharp but But performance-wise, there's basically no difference.
You know, there's a couple little things like vb.net has checked arithmetic.
And, you know, there's some different language constructs.
But at the end of the day, both of them get compiled down to IL.
So I would be really surprised if there, you know,
if you could even find a couple examples that behaved wildly different performance wise so um you know uh it's it's about what you want to do though so
if you know vb.net you're solving problems with it you like it um that compiles down to il it's
kind of like why learn c sharp well i can tell you why so if you ever okay so let's okay so let's assume that right
now you're doing vb.net and everything's going well for you right career-wise you're happy and
all that but there's definitely a lot less demand for vb.net out there than there is for say a c-sharp or a Java. And if you did move on to C sharp,
that syntactically is much closer to a Java that if you ever did find
yourself having to switch to Java,
then at least it's not going to be as foreign to you.
Right.
I totally agree on all that.
That's actually basically what I was going to say is syntactically.
It's so close
to a lot of other languages javascript java um c like i don't know it just translates better
well not c because c isn't class c is an object c plus plus sorry okay yeah so how about this how
about instead take a look at f sharp which is it's kind of like you know if c sharp's one step in the
c sharp direction and i feel like f sharp is kind of like, you know, if C sharp's one step in the C sharp direction,
then I feel like F sharp is kind of like a hundred years in the future of C
sharp. So you take a look at that.
There's a lot of interesting features and you know,
it's kind of a complimentary,
so it's not so much doubling up and it still compiles down to IL and you can
interact with the VB stuff that you're familiar with. And so, yeah.
So it sounds like the answer then is there's no reason why you don't have to.
But for your own self-preservation, you should consider looking into a C-sharp-like language just to protect yourself.
Totally agree.
Okay.
All right. you know to protect yourself totally agree okay all right and then seb writes in and says he's
currently in a dilemma about which laptop to buy and he knows how we like hardware and wanted to
see if we could give him some tips so here's the homework assignment that was given to us basically
right if you had eighteen hundred dollars that you were going to spend on a laptop no more right don't go overboard alan what what was your thoughts
what would you do right like what kind of specs would you prioritize right would you go for a
processor over ram or you know would you go for something mac based would you go for something
windows based or would you just say you know what i know this is gonna be a dedicated linux machine like what what direction would you go all right so
i did a little bit of research because i am a bit of a hardware nerd when it comes stuff like this
and he did ask what would you prioritize the most and so first i think i need to split this up
between mac and a windows based pc
if you're going mac get the most you can for that eighteen hundred dollars because you can't
upgrade it afterwards and that's a big thing now that being said yes all three of us have macs i
personally love mine i know outlaw loves his i don't really know what joe feels about his
love it love it so that's three guys that do windows development
that all three love their macs the issue there though is that with the with the budget of 1800
dollars though for the mac you're going to be locked into a 13 inch yes macbook retina that
that's about that's about as good as it's going to get for that amount of money.
I'm trying to stick rigidly to that budget.
So check this out. So $1,500 gets you the middle-of-the-line 13-inch, which is a 2.7 gigahertz dual-core i5.
Right?
i5.
Now, some might be okay with that, but I just i want to make sure that like that stress that i
you're not getting an i7 and that's with eight gigs of ram and a 256 gig uh ssd so on best buy
right now looking at it you can actually get one for 100 bucks more than that for 1600 it's the
13.3 inch display like you said eight gigs of ram and a 512 gig right so you're talking
about the 2.9 gigahertz yes dual core i5 yeah right i'm going off of like apple's i'm sorry i
should have corrected that i'm going off of apple's uh base pricing and not like what you might be
able to find off of some random retailer because also by the way this question comes from the uk
so what's the best buy here in the United States might not be available there.
Right.
Whatever.
So, you know, if you were to order from Apple.com, that's where that $1,500 price came from.
Now, check this out.
While on the same Apple thing, and this is kind of interesting.
Now, this is not going to be as fast an i7 as what comes in like the Pro, but they have a MacBook Air now, the latest model, for $1,550.
It comes with an i7, 8 gigs of RAM, and 512 gigs of flash storage.
Yeah, and the reason why I didn't want to suggest the Air, though,
is that if you need to drive any kind of graphics, that's where you're going to die.
And also, by the way, I would completely stay away from the MacBook.
As a developer, I would stay away from the macbook as a developer i would stay away
from that one oh yeah the macbook not the macbook pro correct yes because that has like the uh it's
the m processor processor it's a lot slower so your i5 is gonna smoke it right now as far as
priorities though when he asked about that this is where vlad's advice comes in yep yeah you know
your first priority is ss SSD, SSD. Totally agree.
So, you know,
and that's where, you know, with the Macs, you're definitely
going to get the faster, you know, SSD, because
they don't use the SATA form factor, they're using
the PCIe form factor.
But, you know,
I guess it really depends on what you want to use.
The one advantage
of buying the Mac, and the one reason why I
like the Mac hardware, is that it's the only piece of hardware that you can legitimately run every operating system on.
Totally.
Right?
So if today you want to run OS X and you want to develop OS X apps and you want to be able to use everything that Apple creates, then you can. And I'm excluding the Hackintosh because sometimes with the Hackintoshes,
there's, you know, in my experience, there have been problems where, like,
you can't install some software because when it does its hardware inspection,
it realizes, oh, this isn't really a Mac, and it won't let you install it.
But, you know and so you know if
you if tomorrow you decide you want to run linux or you want to run windows you can do all that
and you can dual boot you can triple boot you can you know however you want to run that mac you can
and that's the one reason why i like the mac but with that 1800 budget, if you go back over to, he had mentioned Dell as one in particular,
and you look at their XPS line, this is where that Core i5 comes in because not only do you
get the same 256 gig SSD, but you get the sixth generation Core i7.
Yeah.
Right?
So, and that's at that's at 1550 so for 50 more
you went up from an i5 to an i7 yeah i mean even if if you were to blow his entire budget
and go for the 1800 they have the 13.3 inch uh xps 13 that's got that i7 16 gigs of ram and a 512 gig solid state well the reason why i'm staying
away from the the the 1800 limit is because i'm trying to leave some room to like upgrade some
things so like i'm just looking at base configurations and that way if he wanted to
throw you know 100 in here to upgrade this or 100 in there plus taking into consideration tax and
shipping and anything like that i'm leaving a little bit of wiggle room in there for that
so that hopefully by the time all is said and done,
it comes out to the $1,800 range.
So what you just said, though, and that was high on my priorities,
and it may or may not be to somebody else, is upgradable.
The Macs are not, period.
Yeah, that's the problem.
You buy what you get.
So if you only buy eight gigs of ram and
you find out later you need 16 sorry guy you're gonna have to go get something else so that's
super important in the windows let me ask you this how much memory you have in your machine right now
16 joe how much memory you have in your machine right now 16 oh wow i'm the low man on the totem
pole yeah i i have i have eight and i haven't had any problems with it
but i'm also not running virtual machines yeah concurrently i typically maybe this is one of
the reasons why i prefer to just you know dual boot into boot camp rather than using a virtual
machine so there's windows 4 anymore it doesn't have to be windows it could be linux right i
actually dual boot both or no i don't't dual boot. I usually do VMs.
But there were a couple other things I wanted to point out here.
One, in that same price range, you can get a pretty decent Surface Pro 4,
which depending on what you're planning on doing,
like that's 12.2-inch screen, I think.
The MacBook Pro is only an inch bigger.
It's not like world's difference.
And depending on your portability needs and that kind of thing.
So, wow, you've gone from laptop to tablet.
Right.
And that could be something interesting.
But then there's also.
Because you're not talking about the Surface Book.
No, no.
The Surface Book, I feel like it's too pricey.
But the other thing to consider, and this is, and as he said, there's tons of choices out there.
But if you need discrete graphics, there's a lot of laptops out there that have them that fall in your price range.
So, you know, depending on what you're trying to do, if this is truly just a developer machine,
then any one of the ones that we just mentioned would more than pan out.
If you want to use this for some gaming on the side or something, then maybe you want to look at some of the MSIs out there or any of the Alienwares as well that come with discrete graphics and that kind of thing.
So, and just to keep in mind, those MacBooks, those MacBook Pros that we were talking about a second ago do not have discrete graphics.
They've, you know, they've basically got the intel chip built in so i can't find it now one of the dells i was looking at
though it had a 4k touchscreen on it yeah that is insane yeah i mean there's there really are a lot
of options but power prioritization of features we all agree ssd is up there for me memory would probably be next like
the i5 or the i7 isn't going to matter that much for development purposes it will a little uh the
ssd you're going to see the most performance out of and then also for me how many external monitors
can i push with this thing can i can i hook up to two monitors because if i'm going to set this down
on the desk i'm probably going to do that so yeah i would say like what another thing that would be up there on my list though like
pushing multiple external monitors isn't as big but definitely usb3 ports are big uh to do for
me so i i would want to make sure i had some usb3 on there oh what were you gonna say joe just thinking now why don't you
spend 1800 pounds and just buy the best macbook pro you can get and then you don't have to worry
about any of this other stuff it's gonna have the ssd um you'll get a terabyte yeah it wasn't pounds
dude it was dollars yeah yeah he wants you to spend 3 000 us dollars now yeah man come on up it up no but um the other thing too though just to be aware of
is software needs right the one thing that i really do love about mac software a lot of times
if you buy it like you buy it once right like they're not they're not hitting you up for an
upgrade every six months if it's stuff from apple if it's stuff from that's going to be the case but
you know you're not going to necessarily use Apple for your...
So one thing I didn't mention was that he's doing mostly front-end dev.
So he's using Node.js for his back-end and Ruby.
So it's not like the most process-intensive type of coding environment to begin with.
So, for example, you know, he's not talking about running Xcode in a simulator, right?
So he's not having to emulate an iOS device, and he's not talking about, you know, Android know not having to run those emulate those devices already
takes some processing power out of the equation because you don't you know you're not worried
about that so i mean the core i5s on the mac would you know do everything that he would want to do
but you know he would probably be as an editor probably using something like a sublime or an atom yep you know maybe uh webstorm
but you know those are all fairly lightweight editors though yeah and the core i5 you're not
going to notice the difference well i will tell you this too um if i remember correctly and joe
you can correct me if i'm wrong i believe that the standard issue Mac for Amazon employees, Amazon developers are the 13 inch I fives.
So,
um,
I remember.
Yeah.
So,
I mean,
it's not like developers can't use these things.
I mean,
they're,
they are,
they're definitely well regarded.
And by the way,
if you go to Amazon and just search for that price range and sort by
customer rating,
that particular 13 inch Macbook with the 8 gigs of
ram and the 512 for 1600 bucks has 621 reviews with a 4.9 yeah that's unheard of yeah and there's
a reason they are fantastic little computers you typically at least here in the states you typically typically can buy the max from apple and get you know uh somewhat of a
discount compared to apple.com but i don't know what am you uh amazon.co.uk would translate to
so that's why i went with you know just apple.com and even dell.com so the prices that i mentioned
on the dell those were coming straight from Dell.com too.
Yep.
All right.
Hopefully that helped.
Hopefully.
MacBook, yeah.
I mean, we all, I would get one for that price.
Well, I will say this. Or the Surface Pro 4.
Any conference you go to, you're going to just see that, I don't care what the language is,
but you're going to see MacBooks scattered all throughout that conference.
Yep.
Or Meetup or whatever your choice of developer meetup or gathering happens to be.
Yep.
All right.
So let's get into the meat of this episode, which is really just more of a water cooler conversation.
Right.
So we're going to,
we're going to keep it kind of light and easy this time.
And,
uh,
you know,
I,
I've just had like a bunch of random thoughts that have been on my mind for
weeks now that I've just been kind of like writing these down and we'll see
where this takes us.
All right.
Cool.
So you guys ready?
Yep.
So I think you're going to like the first one,
especially Alan, but, uh, you ever, as a developer, takes us all right cool so you guys ready yep so i think you're gonna like the first one especially
alan but uh you ever as a developer i maybe this may be isolated to us i don't know but like
you'll have your your your tools are fine there's nothing wrong with them, but you just have this urge. There's this like urge inside of you.
This like,
I need to buy something new.
And,
and you know,
so,
so like,
you'll just like look around and you'll just get kind of tired of things.
Right.
And so I'm kind of going through that like now for the past several weeks,
my keyboard,
I'm like looking for a reason to replace it the batteries
died i really am it's like and it's like every time if there's just the slightest little problem
where it doesn't respond i'm like oh it's time this thing's got to go let me describe like we've
talked about this logitech keyboard that i have it's though i think it's called the wave yep i forget the model number off top of my head but
like k520 or 530 i think it's like an mk something i don't know because that would
be mouse and keyboard um so it'd definitely be a case i'm like i don't forgive whatever
we even look it up later but the we we've linked to it many times before in in fact in the last i think in the last time we did
the uh uh the tools the developer tools when i think we've talked about it both in both past
episodes i i liked this keyboard and i've used this thing so much that i have literally typed
the letters off of the keys right they didn't start out like you know how you could buy like
a code keyboard and one of the or
no maybe it's the dos keyboard where like one of the options is that the keys are are blank right
right and they're like trying to be like oh you know cool about it like look it's blank
but i've typed mine off mine's blank not because it came that way but just because i've typed them
off right and and like there's some of the keys that are like so like the plastic is worn smooth Mine's blank not because it came that way, but just because I've typed them off.
There's some of the keys that are so... The plastic is worn smooth and shiny over the time.
But I'm just kind of like, man, look at that DOS keyboard.
I want one of those.
Any of the keyboards that we've talked about, go back to the developer tools.
All of those keyboards, I'm like, oh, man.
What was the Ergodox?
Yeah.
The Kinesis.
I totally want to do that, yeah.
Especially the idea of the split keyboard.
Yeah.
Like the Ergodox.
Yep.
I'm like, I have no good reason to buy that keyboard, but I so badly want that keyboard.
So, I get emails from mash drop all the time which
is like headphones do not forward those to me yeah sorry so ergo docs will occasionally be on
there for sale for like the entire kit and you get to choose the cherry switches you want and so it's
like oh man let's do it i can't. I need to stop looking at this right now.
Yeah.
Because I totally, I'm the same way.
I have no good reason whatsoever that I need to do this, but it's like, hmm, I haven't
bought anything in a while.
Right?
What is that?
Yeah.
At least I feel better that it's not just me.
What's your latest addiction?
I know you've got a stack full of mice over there, Joe.
What's been your latest splurge purchase?
I was passionate about the mice for a while,
but I don't really get that way about hardware or cars.
I just can't.
But I do get that way about my hobbies.
So if I'm into bike riding a lot,
at the time, I'll be looking at pedals and and handlebars and then I'll get into some,
you know, board game or something.
And I'm like, oh, I need to get some plastic sleeves
for the cards, you know?
So I definitely enjoy spending money.
I really expected Joe to mention his guitar at this point.
So I'll do it for him.
Oh, yes.
Oh, my guitar doesn't have enough strings.
I should buy a seven string.'s right and i've got like
10 different kinds of uh guitar strings to change it to so uh whenever uh you know every two or
three weeks is up i change it to try something new i also updated the pickups in it and did uh
some other work on it so yeah i i definitely like things to fiddle on you know what i just
recently bought because my sit down-down stand-up desk.
I was like, man, I really don't like standing on the floor.
So I was like, okay, I've got to buy a standing pad.
I've used it twice, I think.
But, you know, I had to have it.
It needed to be there.
Well, that actually makes a lot of good sense there for you.
It does.
Because you have hardwood floors.
So you standing on a hardwood floor is horrible for your feet and back though yeah they hurt and the pad does help it does help
but yeah i don't know i definitely get that way i can't i can't help it and for me what joe said
is not his thing hardware and cars like those are the two things for me that are problematic
oh yeah i know because like every three weeks i hear this rant from alan about
how he wants to buy the hellcat and i'm like it's not a rant it's just been like how many months is
that carbon out now a year still doesn't have one yet but like every week it's like every every
three weeks because it'll go for a little while where it's like not so like on on his mind but
now that i've brought it up oh I'll definitely be hearing about it tomorrow.
Look at how gorgeous this car is.
It's a family car.
I can haul groceries in this thing.
Yeah, man.
Fast.
So, yes.
You're not alone.
Yeah.
And I'm totally with you on the cars, too.
I'm the same way with that.
So, okay.
So we beat that one.
But how about this one?
So we talked about that, the Pluralsight course on, let's see, it was Relay, Flux, GraphQL, and React.
And I believe I named everything.
Well, I was using Webpack and Node.js.
Yeah, that was all of it. I believe those were the four big ones, though I believe I named everything. Well, I was using Webpack and Node.js. Yeah, that was all of it.
I believe those were the four big ones, though, that I named.
And, you know, so I'm watching this thing, and, like, this thought occurred to me that, like, as I'm watching this, not only am I, like, if you haven't watched this presentation.
We linked to it in an episode or two back.
But it really is a great presentation that the guy gives.
And so not only am I just mesmerized when you're watching this thing,
but you ever have like framework jealousy?
Because like you're watching this thing and you're like,
man, why can't it be that easy with the tool set I'm working with?
Right?
Yep.
Yeah, totally.
That's how they get you to change.
Right.
So what framework was it?
Just what he said, React, Flux.
Oh, that's all right.
GraphQL.
I was thinking it was like the specific JavaScript framework.
Oh, no, no, no, no.
But I mean, just that he was in those frameworks.
And it was just kind of like, oh, that looks, just looks so nice.
I would like to be able to try that,
you know,
but you know,
in the current tool set that we're using work,
it's like,
well,
that's not really going to fly,
you know,
right away.
But then at the same time though,
you know,
because there's also the,
uh,
Oh shoot.
What's the term for it?
Not the,
not the framework jealousy,
but grass is greener.
No, no, no, no, no.
There's a specific term within the JavaScript community about fatigue.
Oh, yeah.
Framework fatigue.
Tool fatigue, yeah.
And I was like, yeah, I guess if it was that easy to just switch to a new framework,
I could see where fatigue would definitely set in.
He's like, oh, great.
Thanks for introducing another framework that we all have to learn.
Thanks. But we've talked about this before in these plural site courses and anything that you
see that somebody is presenting, that's all well prepared because we all know that the simplest of
things never is. Right. So, you know, even though that course flowed
incredibly well, like it really did, you know, he wasn't doing all the complex business problems
that you're going to have in a day to day, you know, programming type thing. So yeah,
everything looked bright and shiny, but you know, he had a few drop downs on the page. Like it was nothing major. Right. Like, well, OK.
I mean, but but the course that he was providing wasn't on like, you know, hey, let's build the most complicated app.
It was on, hey, let's go over some of the core features of these frameworks.
And, you know, we'll use a simple app so that we're not.
It's concepts.
Caught up in the complexity of the app.
We can just talk conceptually, right?
So, I mean, that's done on purpose.
And every course that you ever watch or take is like that.
But that's where the jealousy comes in, right?
Because you look at it, you're like, oh, man, that looks so awesome.
And not knowing what kind of pitfalls you would hit in that versus the current
framework you're working in. Right. That's what I'm saying is like,
and we've talked about it before is it's real easy to feel like the grass is
greener on the other side, not having been to that other side. Right. So,
yeah, yeah. There's definitely a lot of truth to that,
but I will say this too. And, and so I'm,
I'm not sure if I'm going to be in the minority on this one and i'm fully
prepared to be in the minority and not only am i prepared to be in the minority i'm prepared
to receive my lashings for what i'm about to say but so i know you watched it right you watched
this particular course in uh joe did you watch that particular course too not a picture on the spot okay um so then maybe this question is mostly directed to alan but was your feeling on graphql
that it was kind of like a javascript version of entity framework no i kind of felt that it was because you had to do, you had to set up your schema.
You even in that course,
he specifically had a schema object that he set up and you had to set up all
the definitions of it,
of like what you wanted it to eventually map to.
Right.
And you had to set up all this.
It was basically like,
like an entity framework,
which is,
you know,
the, the ORM
the popular ORM for a C sharp for those who aren't familiar with it um with entity framework there are
templating tools out there to where it can automatically create your ob your objects of
your it can map your database into objects for you, right? And in this course,
he was kind of doing that, but by hand, right? And that's where it felt like, I was like, well,
this is really cool. And if you're definitely only in a JavaScript world, like maybe Node
is your backend, right? Then it feels like this is your entity framework answer for JavaScript. But I was
looking at that video, watching that video, I'm like, man, how painful would that be if you are
in, you know, you're using this framework that he had on the front end, which was, you know, React
and GraphQL and whatever. But then on the back end,
if all your server-side APIs were, say, in C Sharp, for example,
and you had entity framework on your C Sharp side,
and oh, by the way, because you're using GraphQL,
you're recreating your schema objects in there to match what you want to do.
So I get what you're saying.
And I guess if I didn't know about Breeze.js,
I would probably agree more
because Breeze.js literally is what you just said.
Okay.
It's almost like Entity Framework in the JavaScript world.
Where GraphQL, sure, you have set up your schema
and your relationships.
You have to do that.
But I think the part that
graphql grabbed me was the fact that you tell it how you want the data back right and that's that's
why it was so so how is that any different than like okay let's go back to the let's use entity
framework as our example here an entity framework let's say you had a products table and it creates
a products object and in that products object definition, or class definition, it has, you know, a property for each
column that that, you know, that row would have, right? How is that any different than if you in
your GraphQL setup, you know, when you're defining how you want the data back, as you put it, because
you're defining how you want the JSON to look like, right? How is that any different?
So the big difference is, let's say that if you're doing this on the server side right when you want something like that it's not like you can just issue a link
statement randomly from somewhere and say hey give me back the data in this format right that would
be amazing if you could just say okay from my ui UI, from the client side, I'm going to pass you a link statement.
Now give me back all the entity references.
Are you saying link as in like L-I-N-Q?
Right.
So kind of that's really the –
You kind of can though, right, in C Sharp because you could totally do a link statement.
Well, that's what you're talking about when you said link.
No, that's what I'm saying.
So the equivalent would be with GraphQL, you can basically say, okay, I want products. And then as a sub array, give me the orders that are associated with it.
And then a sub array of that, show me the customers.
Oh, and then on that same level, show me some other information, right?
So you can literally say, I want all these things back in one request and I want it shaped like this.
And you can do the same thing in C sharp.
You can in C sharp, but you can't do it from the client to a C Sharp.
So the difference is what I'm saying is right now the way that everybody thinks about server-side things is we create RESTful APIs or something.
I see where the disconnect is between us.
The disconnect between us is that you're saying that hey just because i requested it this way i'm
assuming that the back end knows how to do that how to return it back in that way and in his okay
this goes back to your point about how this presentation was crafted in a way to to shape
what he wanted to show right and so there it was now he was using a mongo db you know so a document database in his uh in his
presentation if he had instead been hitting like a c-sharp rest uh endpoint right he's not gonna
be able to just say this is what i want back no yeah because he shows it no yeah so check it out
in that same course and this is why i got
so excited to bring up the star wars api star wars api so what they did with that is there's an
existing star wars api set of endpoints right they created a schema on top of that that is able to
relate those right and then he also makes the point of saying that in that if i remember right
he made the point of saying that in that case if I remember right, he made the point of saying that in that case, it was still making all the individual queries to come back to shape to return that one thing as one.
It wasn't making one query.
Correct.
And I don't care about the one query.
What I'm saying is the beauty for GraphQL to me, yeah, you got to set up schema.
You got to set up things for anything that you want that does things for you, right?
That's not what did it. It was the fact that, so in typical web programming or client
server type programming things today, if you have like, say an order, right? And let's say that you
have an order API and an order detail API. Typically the way things happen nowadays,
unless you write custom stuff server
side, you're going to retrieve that order and then you're going to, okay, that order came back.
All right, now I have the order ID. Now go retrieve the order details. So you made two requests
to get that data back. Whereas with GraphQL behind the scenes, what happens is you tell it,
I want the order and the order details back in this one request that I make. behind the scenes what that does is that makes a query up to the graphql
but behind the scenes in this case is still client side so it's not really behind the scenes it's
still just behind it's still in the yes because in that star wars example no the star wars so the
star wars is server side the star wars example though what i'm saying though is that like
he wasn't issuing a single request to the star wars ap though what i'm saying though is that like he wasn't issuing a
single request to the star wars api and getting back multiple results right if i recall he said
that it was still making like multiple requests play with it no you can go play with it that's
what's how you guys losing me what's the star wars api okay so it's it's if you look for swappy sw api and then graph ql it'll pretty much bring up the github page and then from there
you can actually amazing dude from there you can actually click it and if you start typing
you can make you can shape the data that comes back which is. So you can say query and then open.
I can't even remember the syntax now.
Okay, so it was, hold on, let me just give out the URL
because it was graphql-swapi,
so starwarsapi.parsap.com
was the one that he used in the presentation.
And then that brings up, so here,
I'll walk you through it real quick.
Start typing or do control space, just like your favorite editor.
And you're going to get query.
All right.
So do that and then open up a, um, uh, do a curly brace and then do a control space. And you're going to see all films, film, all people, person, whatever.
Go ahead and do all films and then do
another curly brace and then from there you can say okay give me the page info and then from that
you can say all right open up another curly brace and you don't even have to do colons by the way
you can do all kinds of crazy crap but basically then you just run this thing and it will bring
back the data in the uh so i might have done mine wrong. But so what it does is it shapes it
by making one request to the server.
GraphQL goes and calls all the endpoints
that it needs to to bring that data back.
GraphQL is on the client side.
On the server side.
It is not the client side.
This page that we're looking at is the client side.
GraphQL is all running on the server
is basically middleware
that is now calling all those various different apis depending on how you want to shape that data
and slick that is why it is so sexy it has it's really okay so but still my point was it was still
making the multiple calls though no it's making one call it's making one call from the client to
a server and then graphql is wrapping those REST APIs to make those.
There's your multiple calls.
Okay, so we agree that there are multiple calls.
From the server.
You're only making one from your client.
Fine, fine.
So that's a big distinction.
I'll concede on that.
That's a big distinction.
I'll concede on that point.
Okay?
Yep.
But you're still, though, like, I'm not saying that I wouldn't love to work with this thing.
Don't get me wrong.
But what I'm saying is that if, let's say that it was an e-commerce project, right?
And on your server side, your C-sharp rest endpoints in this case that we mentioned, this hypothetical case, you know, it has its own copy of what the schema looks like.
And now you have another copy of this thing,
but in a JavaScript form.
And I get that what you're saying is like,
and I like that about it,
that it is a little bit more looser about it,
but it's still like, man,
that seems like it could become a nightmare to maintain
i i would think that like with anything like with entity framework for instance
if that were the case there's going to be tools out there that map that stuff right
well that's the point is that on entity like on an entity framework you do have a generator that
would um do that for you right but in the case of a GraphQL, you wouldn't.
I think you, I don't know.
I mean, again, I haven't.
I'm getting totally lost here.
Can we start over?
So check it out, Joe.
I just pasted in a thing and you can run it and you'll see how it shapes the data coming
back.
If you paste that into that page.
Yeah, I get awesome results and I get that.
It goes off and figures out how it needs to query this stuff.
And all I care about is the format that I want.
And I just, I basically define the data that I want and it's responsible for getting it back.
Exactly.
That is the key.
Whereas everything else we've always done client server is you build your server side endpoints and then you make everybody conform to those.
Right.
And that is where I think this is so genius. You have your server-side endpoints, and then you make everybody conform to those, right? And that is where I think this is so genius.
You have your UI guy.
You say, hey, dude, go write your GraphQL query.
You have context-sensitive type stuff here.
You just hit control space, and it'll pull up the things you can do.
You tell it what you want, man.
It's all on you.
I kind of feel like it's like writing a select clause in a query without the from.
It's so amazing.
No joins.
It's just this is what I want.
I mean, it kind of is like that, though.
I mean, that's pretty cool.
I know you're kind of joking, but I'm always kind of joking.
It's my shtick.
So, all right.
What was the original question, though?
Here is a what? what was it what we were
what was the topic what we were talking about oh i i was i was uh getting my lashings for saying
that uh oh it's kind of like graph ql is kind of like entity framework yeah if you look up breeze
js that is straight up entity framework on the client yeah i wouldn't say it was straight i was just saying it was kind of like
yeah now graphql just to me is more of a tool for ui or client centric people to be able to say
what they want as opposed to here's what you have access to here's what you want but here's here's
where i was coming with that though like because with entity framework you could totally write a
link query that could return back an anonymous object that would be like whatever you wanted it to whatever data you wanted to have come back.
But you're defining that hard.
Like, if you say if you say, for instance, you wanted to create this thing.
Well, it's compiled.
So, yes, it's going to be a little bit harder than JavaScript.
No, not harder.
Not that JavaScript isn't compiled, but it's concrete is what i'm saying is if you want a particular query because it's into a compiled
into a binary format that you can't modify sure i'll give you that but i'm not talking about
from like you know um trying to be like oh god i wish the words for it i'm not trying to be that
specific i'm just saying that conceptually,
when you're working in an entity framework environment,
you could write queries that are,
if you wanted to just return back a random thing
that isn't really a type in the database,
you could totally return those back.
You project those.
And iterate over those or whatever you needed to do.
So, whatever.
I think we've beat that one to the point enough know enough but well here's what i want to know right this is
clearly really cool um we can have a link where you can check this out well what i want to know
is is it so cool that we're all going to be working with this three years from now or is this like
cool neat trick you know well i mean it's not going away anyway this is this is out of the facebook
lab so this isn't going away anytime soon and they use it yeah so uh you know right react flux
graph ql i mean this is all you know in their uh wheelhouse of technology tools that they use so
i mean so is this like the future of rust so you it that cool? Yeah, I mean, to answer that specific question,
I feel like this is a bigger deal than a lot of the other frameworks out there.
Like, you've got React, you've got Angular, you've got all these things, right?
This actually changes the way you think about doing things.
Where those frameworks are, they're made to help you accomplish
things this makes you think about oh man we can actually enable somebody to do something so
in my actually kind of feel it's like not thinking about it because the flip side is
oh i got to think about this endpoint and they're going to want back all the specific data and with
graphql you're like you know what let them figure out what they want i'm just going to provide a
bunch of different endpoints and they can figure out what they want. I'm just going to provide a bunch of different endpoints,
and they can figure out how they want to, like, cobble it together.
Yep.
And that's why I think, yes, this is maybe not this particular technology.
I don't know.
But this way of thinking, I think, will start permeating its way into development.
All right.
So I guess we're going to have to give Alan one,
Michael zero.
I guess I got
beaten pretty good on that one.
I still feel like it's kind of like
just because the fact that you're defining
a schema and you might have to be
doing it in multiple places.
You do have to set up your mappings.
That is additional work, no doubt.
In that example that he gave,
it's rather small,
but on a large project, it seems like it could become tedious.
So at any rate, we beat that one enough.
So we've had people write in before and complain about ReSharper
and how they don't like it and how it slows things down.
And I even just recently heard
you alan mentioned the same thing which kind of shocked me because i was like wait a minute what
when did that happen when did alan stop using resharper specifically because he was complaining
about it being slow it's been it's been a while like i i seriously got to the point where i was like i i feel like i'm waiting
for things too much and as soon as i uninstalled it everything was good so i was like you know
what as much as i love it i'm just not going to deal with it so you feel differently if you were
100 c sharp maybe that that that's a very good. I probably split my time 75 front end, 25 C sharp.
So, yeah, if I was doing a bunch of.
No, he is totally lying.
He is totally lying.
He splits his time.
His time is probably like, you know, a thousand percent SQL.
A hundred percent javascript and like some five percent c-sharp now i'm not a mathematician
so i think i have the percentages i think those add up correctly that might be true but yeah i
think i think that's a good point if i was doing doing C-sharp 80% of my day,
I would probably go back to ReSharper
and just bite the bullet and be like,
you know what, the headaches or the slowness
and my computer fan sounding like a jet engine
are probably fine.
Well, now here's why I bring it up, though.
So I think we've talked about this before
about how, I believe it was with ReSharper Ultimate or maybe it was with ReSharper 9.
But I had upgraded it without even thinking about it, installed it, and then within the first month was like, oh my gosh, I got to get rid of this.
And I forget what the specific problem was that I was having.
I think there was like a specific bug or something that i was having issue with at that time and and so i
was like well i can't work like this so i needed to uninstall it and uh but i forget how many months
ago that was but i have since you know reinstalled it long ago and have been continuing to use it. But the one thing that I did different this time.
That I have never in the history of my ReSharper usage done.
Is that when you install ReSharper it gives you this option of.
Hey do you want to use the ReSharper key bindings?
Or do you want to use the Visual Studio key bindings or do you want to use the visual studio key bindings and historically i have always stayed
with the visual studio key bindings and my reasoning was because like well why do i need to
learn the resharper key bindings i already know the visual studio ones let me just continue with
that but because of my growing love affair with webstormorm, you know, I decided, well, yeah, if I'm already using WebStorm so much, you know, I'll just use the WebStorm key bindings.
And then that way, you know, it applies to both IDEs, right?
Right.
And, yeah, you use the key, the ReSharper key bindings in Visual Studio, and, yeah, it's slower. Really? Yeah. You use the key, the ReSharper key bindings in Visual Studio.
And yeah, it's slower. Really? Yeah.
And that's why I'm wondering, like, is that how you've set it up?
And I'm wondering for like other listeners that have complained about it. Is that how they've set it up?
Because there have been times where like I want to do something as simple as comment out a file.
And ReSharper will pop up a little window saying ReSharper is thinking.
And I'm like, thinking about what? Right. Add two slashes to the front of the line and move on pal right no
i definitely went with the uh visual studio key bindings because i was in the same boat at the
time i knew visual studio so i was like yeah i don't want re-sharpers so that that's most
definitely what i used are you still using re-sh, Joe? No, and it's a similar reason to you.
Basically, I figure I'm doing about 30% C Sharp right now.
And what I kind of told myself is if I get back to 50% or if there's at least a week-long period where I'm doing it over 50%, I'm going to reinstall it.
But for now, it's just not worth the slowness when I'm doing JavaScript or SQL.
Wow.
Listen to you both. Wow. I never thought I would would say that i feel like i've just been deserted i'm here on
this little island all by myself this little island of resharper well you remember jim breens
is never going to sponsor us now by the way so way to go guys way to go well you remember though
back i think it was version 7 i absolutely version 7. There was no real discernible difference between speed with or without it.
But the tools were amazing.
And then it seemed as it progressed, it just got slower and slower and slower.
And I was like, okay, I can't hit.
It's like you say, go to comment out of line and wait for 20 seconds.
And it's like, I don't have time for this.
Yeah, but that's literally the only problem that I've noticed though is with the key bindings and and i haven't
tried it yet but i've been meaning to i just haven't had the the downtime to mess with it
but um i have been wanting to uninstall resharper and then reinstall it but go back to the visual
studio key bindings and see if i noticed that and in in fairness to resharper when it does that you know
resharper is thinking crap then it's not um it's it's usually like after i have just recently opened
the solution or something like that and yeah um and it'll do that so it's building up its caches
and everything so i'm like okay fine you know i this is stupid, but I'm willing to kind of give you a pass
because at least once you get running, then it's fine.
I don't have any problems with it.
But to say that you're not going to use it,
how do you do unit testing without it?
Copy and paste.
Oh, Visual Studio runs and unit tests now yeah but come on man like i gotta
have my dot cover in 2015 oh yeah well the the plug-in yeah i mean i just did that today as a
matter of fact like i don't know i mean there's some things that i miss about resharper but there
was nothing the the refactoring was really good in it right but? I'm a big fan of the refactoring capability.
The formatting was also very nice.
But the testing, though, that's a deal breaker for me, though.
There's no way I could not have my dot cover, resharper and dot cover in there.
Yeah.
I felt like the pains of living with it were worse than the pains of living without it.
And you know what?
I'll say that i still
have a license and i still use it for like pretty much any personal project i'm doing in c-sharp
and i think that it has to do a lot with the size of your project so if you're in a small project
you'll never notice the difference if you're in a ginormous you know bazillions of lines of codes
project then that's probably when you're going to notice the problems at least that's what i have
yeah that's an interesting point though but i think the problems. At least that's what I have.
Yeah, that's an interesting point, though.
But I think I've seen my key binding problem on smaller ones, though.
I think.
I could be wrong.
Now I want to go back and test that.
Maybe I'll give it another shot here soon.
I just haven't had the desire.
Blasphemy.
It really is, because I loved it. I absolutely loved it until I didn't.
Crazy talk.
It's kind of like the X, right?
Yeah.
All right.
Visual Studio has also added a lot of features that I really liked.
Yeah.
2015 stepped up its game a lot.
Yep.
All right.
So let me just say first off that everyone that has already taken the time to
leave us a review like i know that we've said that we appreciate it but we are not lying when
we say that we do truly truly mean it it really does mean a lot to us and and if you haven't
already left us a review, now's your time.
Pause.
No, you can keep listening.
There's no reason to pause.
Because the next piece of important information might help you.
So you can head over to www.codingblocks.net slash review.
And there's some helpful links there to send you over to iTunes or to Stitcher to,
to leave a review for us.
Um,
if you don't have iTunes already installed and you install it,
Hey,
thank you.
Right.
That,
that's a huge effort on your part and we truly appreciate it.
But,
but do know that it really does,
uh,
put a smile on our face when we read those
reviews though.
Yeah.
And for all you guys who have actually requested Slack invites and,
you know,
left us,
you know,
nice little reviews in those as well.
We appreciate them.
If you wouldn't mind just copy and paste those,
but no,
seriously,
thank you for the kind words for everybody who spent the time doing it.
It's,
it's huge.
It's been a Slack. Uh, you all should join Slack.
It's a lot of fun, and there's a lot of really interesting characters in there
that are always dropping excellent knowledge.
And I feel like I'm learning something new every day
and definitely getting lots and lots of chuckles.
Yeah.
Which brings me to another topic,
because my Slack invites are better than yours.
Absolutely.
Mine is invite sent.
You know, if you have been a lucky recipient of one of the responses from me on your Slack request, you can understand what i'm getting at because if you simply received
a uh you know invite sent from alan or joe there's an exclamation it's awesome but what i mean though
is it's like it's kind of like just boring then then you understand because i because even if i do
like now admittedly like some of my first ones when we first started doing it were rather lame like that.
But I quickly grew tired of that.
But there have been times where like even if I have said something as boring as invite sent, I've tried to put like little Easter eggs elsewhere.
And I don't know if you've caught any of those.
Have you?
Joe, have you?
I've seen a few, yes. There have been some awesome ones.
Here's an example of where it'll say,
sent from Alan's iPhone.
Shh, don't tell him.
That's actually the one I was thinking of.
My favorite is still Absolute Slack and Lootly.
Absolute Slack and Lootly.
Yeah, that was a good one.
I started doing that one for a while.
Yeah.
But you know the problem about you making this public now?
Everyone's going to expect it?
Yeah.
So it's almost like when somebody tells you that, man, that movie was so amazing.
You get there and you're like, I didn't really get it.
I thought you were going to say the movie had some awesome scene after the credits and now every movie has to do that.
Yeah, you're setting yourself up now.
Everybody's going to expect higher. You should have just kept the bar the bar low yeah i probably should have but honestly though i've had fun trying
to come up with like creative little things to put in there and then sometimes sometimes i'll
really be like and it's stuck i'm like ah man what should i put there but yeah and and also
too like sometimes like a joke will come to mind like something i should say and i'm like
you know i probably shouldn't say this because i don't exactly know what part of the world this person's from.
Right.
And, you know, not every joke in text form is going to translate well.
So maybe I won't use that.
So this is also his public apology.
Yeah, it's just the inner thoughts of my head you're
getting to listen to, so sorry.
It's me and Joe with the boring Slack replies.
Yeah, no, I have to apologize for being
boring. Thanks, Michael. You're welcome.
Well, actually, that's
my way of helping the listeners
or anyone who does future
requests because now I'm kind of
throwing the gauntlet like you guys got to
step up your game here. I actually know what I'm going to do
now is I'm just going to wait for you to reply to
them all.
You're going to leave it as homework for me?
Thanks. Wow.
So you guys want to guess how many people
we have who have joined our
select channel? 250.
Oh. No.
212. Wow.
And you guys should join too because uh it's awesome it is growing fast
it's pretty amazing and there are just incredible people more than 200 other like-minded developers
for you to chat with yeah what's your favorite channel oh dev talk yeah i think dev talk is
probably my favorite too yeah i also like dieting too that's a good one too yeah yeah
hmm yeah dev talk's probably my favorite and i like general too because even though we have a
random channel that's where most our random stuff goes yeah it does it does like like the michael
one drive i believe happened in in general yeah Which if you missed that, then you missed some awesome humor there.
But all right.
So what we got next?
Oh, sorry.
I was playing Stardew Valley.
Didn't what's going on?
No, I think it's time we do an ad spot.
Oh, okay.
Yeah.
It's your turn, right?
Thinking about becoming a software developer?
Check out Dev Bootcamp,
the original short-term immersive software development program
that transforms those new to coding
into job-ready, full-stack web developers.
Learn front- and back-end web development,
teamwork, and leadership skills
in a rigorous and inclusive environment.
Dev Bootcamp has several locations around the country and is accepting applications now.
Visit devbootcamp.com slash codingblocks to learn more.
All right, so in the last episode, we have fun with our surveys as always and the survey was related to get one of my favorite topics squash
or not to squash now alan's already got a smile on his face does that mean you cheated alan i have
not looked but apparently i won all right wait what what are you doing all right so here were
your options okay i squash because i, meaning that you do squash.
Or everyone can learn from my path.
I don't squash.
Or, wait, what are they talking about?
Or, I suppose, but only if it's convenient.
Now, Joe and Alan, you haven't cheated, right? You haven't already looked at't cheated right you haven't already looked at the
results i haven't even looked at the emails that come through okay alan or i mean joe i have not
but i did want to point out that since we started that survey so github has actually added the
feature to do this well as well via checkbox okay well we'll come back to that hold on so of your four options squash don't squash what or i suppose
which one do you think was the overall winner do you want to or do you want to do like a one two
three four like you want to rank which ones or you just want to give the overall winner
overall i know the winner is already oh my god joe did you cheat no i just know oh everyone can learn from my path all right what percentage do
you think it is you think it's you think everyone 60 wow you think it had a commanding lead at 60
okay 60 of the vote joe which one do you think i think that if it's convenient, got 75%. Really? Yeah. Wow. Both of you guys are confident in your answer.
Yeah.
If you weren't lazy, you wouldn't be a programmer.
That is true.
That's kind of true.
That's a Larry Wall quote, too.
Yeah.
Well, you're both wrong in your percentages.
I'll go ahead and I'm going to bring you down easy. But, Joe, you're more wrong in your percentages. I'll go ahead and, like, you know, I'm going to bring you down easy.
But, Joe, you're more wrong than Alan is.
I'm not surprised.
I hate that he won.
I'm going to go ahead and say that.
I'm going to take my ball, and I'm going home.
Alan, two.
Outlaw, outlaw 0.
Dang.
So that really makes it hurt even more.
So everyone can learn from my path.
Don't squash.
One with 34% of the vote.
I wasn't super high.
Okay.
No, that's why I was so excited that you both were so confident.
Everyone thinks the way I think. All right. Okay. No, that's why I was so excited that you both were so confident.
Everyone thinks the way I think.
All right. So Joe's was second place, I suppose, but only if it's convenient, is 25% of the vote.
And then tied for third place was I squash because I care at 20.5%.
But then, wait, what are we talking about?
Was equally tied with it.
Like, what?
What?
Oh, that's amazing.
Why is that equally tied?
What percentage of people, working developers,
do you think are not working with the distributed version control system?
Oh, I'd say a large.
That's an interesting question.
I'd say a large.
I'm going to guess 22%.
So, yeah. them oh i'd say a large question i'd say i'm gonna guess 22 so yeah so at any rate alan to michael zero well if you ever want to feel better we can go play tennis oh my god
that would make me feel a lot better it would actually actually you and joe
sure i feel good i feel comfortable with that actually I feel comfortable with that yeah 34%
agreed with Alan
yeah baby that's never happened
it's usually 60
wow
walking around the puddle or through it
so to
Joe's point that he brought up
though so GitHub recently introduced a feature
where when you merge in a pull request,
there's now a checkbox to where you can squash the commit
as you merge the pull request in.
And Visual Studio Online also has this feature,
and surprisingly, they introduced it before GitHub.
Boom.
So that's one way to squash your commits, but I kind of have my own reservations about that.
So I don't know what your thoughts are on that scenario but because if you aren't the author of that if you're the author of that and you just and you are the one who gets to push the button to to merge the pull request in it's
already been approved but you get to merge it in and you get to squash the commits then i'm okay
with that but if somebody else does that behind you then that's where I kind of take issue with it.
Because now if you're still the author of it and you start merging in things,
you're because they squashed it,
it's going to be different commit IDs.
And now in your local repo,
it's going to look like your commits have never been merged in.
Yeah,
that's interesting.
I agree with that.
So you should never merge other people's pull requests?
No, I'm okay with merging other people's pull requests.
I feel uncomfortable about squashing their commits.
That's the part that I'm not so crazy about.
So I guess it depends on the repo and what the rules of it,
of that community are and everything.
But I don't know, just my random thought on that one.
Yeah, that's interesting.
So Joe had an idea for our next poll.
Joe, do you want to intro that one?
Yeah, so a recent announcement from the Build Conference
that's been making some waves is that Bash is coming to Windows.
And there's a lot of talk about what that means for powershell and windows and docker and all sorts of stuff and so what i want to know is um what you guys think about this and uh specifically
i want to know if this is the next big awesome thing or if this is just a bunch of hype and no
one's going to use it and i I've seen things go both ways.
I've been right and wrong about things like this in the future.
So I want to know what you guys think.
Bash on Windows.
So can I sway the jury?
Or nothing.
You can try.
Well, because I was so successful last time.
So, dang it.
But if they were to do it right, if it was a truly compliant Bash environment,
like what you would get on any other Linux environment,
this could be amazing for me.
I don't know about you, but it'll be amazing for me.
For me.
That part's key for me.
Yeah, no more Git Bash, right?
Well, yeah, because it's like, well, Alan's converted me over to Connie Mew.
But, yeah, I would totally, I wouldn't have to install anything else.
It would just already be there.
Yep.
Right?
Well, I'd have to install a Git client.
I like the idea a lot and and i'm not
necessarily a bash lover but i really like the idea of having something that would be consistent
between my environments but my thing that i'm afraid of is that it won't be consistent it won't
be a full-on okay because like for example if you're in powershell and you do an ls it'll try to act
like it's doing a listing the same as what you would get in any kind of unix environment right
right but the flags don't work yes exactly it's really just an alias for a powershell you know
for a shortcut you know in powershell so it's not the same thing and that's what i don't want them to do if they're going to do it
then be all in and do it so is this going to kill sigwin oh is it already isn't it already dead like
i don't know i mean it i i mean i know where you're going with that but but yeah i mean i
haven't been using that for a long time. Only because Git Bash is good enough.
And then some of the other ones are.
It's that 80% rule, right?
It gets 80% done of what I need to do.
So it's good enough.
I would be interested in how well this turns out. It would be nice to have the same type terminal everywhere.
My prediction is that it's going to be really good.
Because even right now, primarily for years now, I've developed on Windows.
But I still think in terms of LS and Cat and Curl.
And I think these things have kind of entered the programmer vocabulary.
So if someone tells you to curl something, you probably know what that means.
But if you're working in a Windows environment, you might you know, invoke dash web request or whatever it is in,
in PowerShell.
See,
that's the thing is like,
what do they mean when they say bash though?
Because bash isn't all of these other commands that you're talking about.
Right.
So,
yeah.
So,
cause the bash is just the shell,
right?
I mean,
you know,
corn shell is another one that,
you know,
some people are,
you know,
adamant about,
but those other commands that you mentioned
are not part of either.
Right.
And so that's what I'm talking about.
I want all those other commands to go along with it.
I want to be able to type in a tail minus F
on a log file instead of some stupid PowerShell
get content dash wait dash whatever,
and then half the time it doesn't even work right.
I hate that command. But they don't have to do any string processing which is nice but so i do love powershell don't get me wrong but i do think this is ultimately a good thing
but i also if my understanding is correct and it may not be it's often not uh i think everything
is gonna kind of work like you might expect upon hearing it. And that's because they've basically swapped out some lower level calls with the Windows API.
And so while it may not come with like, say, curl or some of the bashier type things,
or, you know, ZShell type things,
I think you're going to be able to get those things and they're just going to work
because the stuff that they rely on just kind of works.
That's awesome.
So fingers crossed.
Yeah.
Yeah.
So hopefully we haven't swayed any opinions there.
And if we did sway any opinions,
I hope we swayed them in my direction.
Yeah.
Well, I know for a fact
that each one of us is going to find
one thing about it that drives us nuts
that isn't quite perfect
and we're going to complain about it.
Well, of course.
We never.
Of course.
Programmers don't complain about anything.
We're the nicest group of people.
Actually, hold on.
I think the one thing that almost every programmer will complain about is what we talked about with ReSharper earlier.
Performance, right?
We can get by with a lot of nitpicky stuff, but if you kill the performance of what we're working in, we can't take it.
Right.
Well, speaking of announcements from Build, what about the new version of SQL Server coming for Linux?
That's pretty neat.
Yeah, I don't really care.
Really?
No, that was...
I did not expect that.
Yeah, I mean, if I'm going to be dropping the money on the SQL Server,
then what's a Windows license, right?
Yeah, put it on the box, right?
Yeah. I think it's more about the it on the box, right? Yeah.
I think it's more about the portability though, right?
Yeah, so it's cool.
Whatever.
Whatever.
I was thinking of it more from the point of view
of simplicity to access it.
Right?
Start executing your queries from a bash shell.
Wait, does this mean they're going to be replacing
that terrible installer where it's got all these icons
and how do I just install SMS?
I don't know.
Oh, gosh.
And it's like you go through 15,000 steps
and each time you think, okay, I'm done.
And then you realize, oh, no,
that was just a checklist for the next step.
Yeah.
Oh, and by the way, I don't know if that's going to include
actually being able to run queries
from a bash shell.
I would imagine it would.
You can run queries
from a command prompt.
Oh, that's a big imagination.
Yeah, maybe not.
Yeah.
I'm curious to see
if it's actually going to work.
I mean, that's a pretty big undertaking.
Well, I mean,
they demonstrated it working.
So it's working.
Define working.
Right, right.
With everything that you currently have.
I'm going to let someone else test drive that one first.
Right.
I just wonder what the cost will be, right?
I mean, SQL Server has not gotten cheaper over time.
Well, imagine.
Okay, but if we can live in,
we're already, this is a journey into my mind with all these questions I'm asking anyway,
so let's go further and say,
what if Microsoft know microsoft
has been making a big push into the open source community here lately and you know there's the
community edition of visual studio and and for years there have been a free developer version of
uh sql server what if they came out with a free version for linux of full-on sql server use it
however you want why would would they do that?
So I get the open source thing.
It's like a drug dealer.
They give you a taste for free, right?
The first one's free,
and then they get you hooked in, right?
Isn't that the way it always works?
That's an interesting take.
So here's my thought on Visual Studio.
By making free editions, that is absolutely brilliant, right?
Because you get people on board with your tools that buys them into that environment.
Okay, well, this is the same thing then.
SQL Server, though, is your workhorse, right?
Like that is your data storage.
That is your retrieval.
That is enterprise
software no no but but they can i mean they could try starter they've are for starters they've
already for years given away a free developer version of sql server yeah you're right you're
right and and well not developer that's sql server express developer not developer developer is
actually 80 bucks um they're yeah the sql server express has limitations like no i think they Express. Developer. Not developer. Developer is actually $80. Yeah, the
SQL Server Express has limitations.
No, I think they changed it.
There was a developer version.
You always had to pay for the developer.
Because it's essentially enterprise
for developers, is what it is.
But either which way,
if you made it
free...
I'm saying they could still scale back the functionality of it,
the feature set of it.
So it wouldn't have to.
It wouldn't be enterprise.
Full text indexing maybe not be an option.
Maybe what other.
In that wizard of 1,000 different things that you have to decide,
maybe a few of those are not enabled in this free Linux version
that I'm saying hypothetically, what if this thing existed?
It would be, I mean, if you think about it, for all Windows developers, or people who develop on Windows, I should say,
it would be kind of cool to have your same database engine run in a Linux environment.
Like, that's, I don't't know that's pretty neat but because hypothetically if they did
make this thing right then my sequel could have some free so have some competition at the free
level yep right and then in my sequel already has a huge following oh major so there's your incentive
why microsoft might want to consider something like. Because now what if you can sway some of those people to consider,
hey, maybe SQL Server can do something more for me.
Let me get a taste of it.
And then once that group of developers, their company becomes the next big thing,
and they're like, hey, let me scale up now.
And they buy support like most of the MySQL people.
They move on or they move on to a larger edition of SQL Server.
So, I mean, there's all kinds of reasons why they would maybe want to do that.
Yeah, I really am looking forward to it. Don't rule it out.
Yeah, I would like to see what happens with that.
Yeah, it's going to be exciting to see.
They saw those MacBooks that build and they're like, oh, man.
Yeah, I see it coming
so so here's this random thought that i had we were talking about rest in points earlier and
i was working with a rest in point here recently that shall go unnamed and it was not paypal though oh okay um no this was actually
a good one and if there are any paypal developers listening to us i'm sure they just stopped um
if if you if you develop a rest api right and your REST API requires that users download and install something in order to use it, right?
Like, you know, something as simple as an SDK.
Okay, okay.
Are you doing it right?
For REST, that's pretty crazy.
And for SOAP, you know, I'm kind of used to that sort of thing
yeah required is the strong because i mean even aws right like you pretty much want to download
the sdks because it makes your life a lot easier are you doing it right i mean people could argue
that amazon's probably doing it the best well okay, okay, so you brought up AWS as an example, right?
And I jokingly referred to this not being PayPal,
and it truly wasn't PayPal.
But, you know, in either case, you would have to, like,
let's stay in a Visual Studio environment here, right?
You would have to install a NuGet package that corresponds with their API
if you were going to use their API, right?
If you were in a Java environment, you would have –
Say what?
Say what?
Can I just hit a URL?
Yeah, but then the problem becomes you end up reinventing all of everything
that they have in their SDK because they've already, you know, broken out
like how to interpret their responses, you know, how to interpret their JSON response and how to
build, you know, what the matching object should look like and the functionality of that object,
what it should have, you know, they've already done all that for you. So sure, don't use theirs,
but you're going to end up reinventing everything right yeah and and you
know similarly if you were to do this in a java environment right you'd still end up
downloading some package and you know importing that into your project so
either way but it's you know because what what this was splunk okay was the one and and it just
kind of like hit me at first because I was like,
wow, REST started out as supposed to be this simple thing, right?
But now it's like, well, big players like a Splunk or PayPal or an AWS,
you're not using their API without downloading downloading their uh client package right where there would
be a nugget package or you know whatever right you're you're not getting away without using that
unless you just really like pain like joe apparently likes pain you know so it just kind
of struck me as odd as like how like it evolved like, well, you know, yeah, it's REST, right?
But you're not just making some simple web call.
The REST part of it is just completely abstracted away from you.
You might not even know what the REST endpoints are that it's hitting.
You're just making a method call.
Right.
That's all you know.
So I have mixed
mixed feelings on that i think the sdks don't necessarily mean you're doing it wrong i think
it's almost a side effect of using strongly typed languages right only from the perspective that
so you get back an array of things basically is what you're going to get from a rest type call right and if you don't have
some sort of typing a wrapper around it in an sdk form like you said you got to parse all that stuff
out and in a in an static language like do you really want to be doing a bunch of dynamic
variables and stuff in your c-sharp to try and you know inspect those things now granted you probably could you probably could
go and create all your other classes like you know that this is the format that's coming back
and you could do something like a dapper right to where you can map this array of things into a
bunch of objects but the sdk if it's not doing anything completely over the top i don't think that's necessarily a bad thing
because usually it's just really turning what the response was into usable objects right i mean
usually usually hopefully now with amazon with the aws stuff though they they take it a step
further you have your public your private keys and all that and it does some concatenation and some and some right base encoding
and all that to you know securely you know transfer your they do add some helper functionality in and
so i don't think that's a bad thing but yeah yeah i mean i was kind of like leading you guys with the
you know are you doing it right but it did kind of strike me as odd as i was thinking about like wow how this
thing has evolved into it's not just a simple request like right you know because you joe you
brought up soap right and like one of the problems that people have with soap was how complex it was
in comparison and you know rest was supposed to be so simple but now it's like yeah well to use some of these rest apis that are out there you have to
have almost as much complexity in in what you had in soap but now in the form of this other sdk that
you have to go back and learn and you because some of them can be really complicated oh absolutely
paypal's insane absolutely insane and even trying to dig through their code, too.
You're just like, what?
No.
Now, this is where I would like to bring back any PayPal developers that are still listening to us that haven't turned us off yet.
This is where I want to bring them back to where they'll be huge fans of us because you know as developers we whether we intend to or not have you ever noticed how we develop a relationship with our
code oh yeah i mean there there's code that you just love you you're it's like you know you're you're ready to do cartwheels because like you're so
happy with that code right and then there's code that you just absolutely loathe yeah you can't
stand like you're embarrassed to say that you wrote it and you took like there's nothing in
the header file that has your name right there's no mention of you you you tried
to erase the git history for that file but you failed and only made it worse but you know
you ever like i know i can't be the only one oh no i'm definitely there i actually try to move
all the gross stuff to gross files so i can keep the clean stuff
cleaner like i don't know this is good uh let me just move this to utils park because uh it's
nasty so if i ever see a gross.js i'll know it's yours oh yeah yeah i don't write bad code
all right now i mean if it, it's good, right?
There are two other guys with microphones in front of their faces that have read some of your code.
They have read some of your comments like, I don't even know how I got here.
Yeah.
That's amazing.
In fairness, usually those comments are like, so I've traced my way here, and I have no idea how I got here.
I feel like it feels like we're remaking the Blair Witch Project.
I don't know how I got here.
I'm lost.
This is the guy who came up with having a special kind of note for the things that we're hacking, right?
Oh, you like that, right?
Is it hack or fail?
No, no. Frag you like that, right? Is it hack or fail or... No, no.
Fragile.
Yeah, fragile.
Yes.
Yeah, right.
Everything he does is perfect.
You know.
So that fragile code,
do you love it or do you loathe it?
Oh, man. Slash slash bug in the framework colon man we we've all been there right like where where and joe's done this like we work together and
he's like look man i know that you're getting ready to take this over i'm so sorry and I'm sorry the funny thing is
the read me says go away
dude even with code that you're proud of
like you'll always be looking at it
going oh man look I just need to tell you about
this one thing in here
and you always have that
in the back of your head
like even the prettiest stuff
you're just always like oh man I really don't want them to criticize it.
But I need to let them know about this.
Right.
You know, and I don't know.
I think that's a good thing, right?
Until they come back and complain about your DTOs.
Right, right.
Or lack of documenting.
Oh, my gosh.
But, no, I mean, that's really the thing, though, is I think that's what really separates people who are truly passionate about what they do is you do kind of I hate to say that you form an emotional bond with it.
But you want people to kind of be not turned off when they have to come into your code.
Right. And that's that's always a nice thing.
Well, yeah. So you definitely do.
Like as developers, I think we definitely do create an emotional bond with it.
I think that's a great way of putting it, right?
But I think that this is like, it's definitely not specific to just developers.
Like anyone who's in an environment where they create something, right?
So if you're a hardware engineer and you create some new hardware,
like Johnny Ive, he probably loves his his job right like that guy that guy is really happy i'm
sure right um if you are an artist you know you you there's art that i'm sure that you love and
then some that you're not as happy with you know but. But I wonder, too, though, if that emotional swing goes from love to loathe as fast as it does for a developer.
Because I know that there are times where I'm like, you know, there's some code that I'm like super happy with until I show it to one or two other developers.
And then I immediately hate it.
And I'm like, you know, I didn't write that.
I don't actually know where that
came from that's uh wow someone committed that using my credentials i don't i actually don't
know how that happens uh i have a solution for you now it doesn't get rid of the git history
we just put a typo in there so that the build fails and they'll be like, hey man, can you go fix that?
Their name's the last
on the file.
Let's assume it's a single file.
Right, right.
That's a good idea. I'll have to do that to all my files
from now on.
Now it looks like Alan was the last one to
do a...
I originally authored it, but it looked
completely different when I did it.
It says here he only added one character.
That's awesome.
Hey, wait, Joe, this is kind of random.
Didn't you just publish your first Box Pusher thing?
Oh, yeah.
Not to put you on the spot.
Yeah.
Box Pusher was a little game I did just for fun.
I wanted to get some more experience with some of the Node kind of JavaScript-y build stuff.
And so I did that a while back, and I wanted to make an Electron app out of it just to play around.
And, you know, I didn't want to do a submodule in Git.
I didn't want to duplicate the code.
I was like, how do I check this stuff into Gitithub without duplicating all the code for the actual
you know the actual app and so uh the easiest way is just to make it a package and publish it up to
npm so I am now a published npm package person which is very easy to do it's free and electron
you're talking about electron.adam.io right yep so it's basically like um it's basically
a browser it's a chromium browser that you can install and alongside your custom like website
code and so you can create a cross-platform app with website code and you know javascript and
html and run it and a lot of apps that you've probably used, including the code visual editor,
or sorry, the code editor that Microsoft just released
or the Slack app actually too, are built on this.
And so it's just a really nice way
of running a website locally.
So I wanted to give it a go.
So I created a package
and have now taken the word box pusher
away from anyone who might want to use it
for something useful.
So I could not check in duplicate code and get that no one cares about.
So how about this one?
Maybe we should make this one the last one for the evening.
The last random thought from my mind,
but reflection is not a dirty word.
I agree.
So often, you'll hear someone talk about something with reflection,
and their immediate gut reaction is,
oh, no, no, that's reflection.
You shouldn't use that.
That's horrible.
Why would you do that?
It hurts performance.
You should never use reflection.
There's got to be a better way.
We should call Vlad right now.
There's times where I'm like, no, it's actually a legitimate use for it.
It's not necessarily a bad thing to use reflection.
It depends on what you're trying to do with it right like if you're going to recursively do it
you know uh you know a billion times yeah that's probably going to be a bad thing
but like i mean i'm reminded of an example of where um uh gosh i don't even know how long ago
it was now when early on when i wrote that uh little pattern about that i referred to as the reflection
of control and um basically the idea was that that assembly it it would at startup time do a
one-time reflection to just find some types but then it was done and it would never it would never
do it again it was done it was it only happened at app startup and like some of the feedback i got back
even from people that i knew like friends i knew they immediately were like oh that's horrible why
would you use reflection for that no i'm never i would never do that that's bad that's i you know
someone once told me that reflection was bad for performance, so I would never do that.
And you're like, come on, man.
Really?
Yeah.
I mean, my feeling on that is tools exist for a reason, right?
There's a reason why reflection exists.
It's useful.
It can be used.
It's the same thing with link, right?
I've heard so many people say entity framework is a pig. It performs horribly. Okay. If you're writing link queries and you don't understand what it's
doing behind the scenes. Yeah, totally. You can completely bomb your entire system. And the same
thing with reflection, like what you're saying right now, if you don't understand the impact
of what you're doing, if you're recursing a billion times or something yeah you're gonna tear it up but it has its uses and it they're
really good uses so yeah i i don't like anybody who just dismisses something just right off the
top right like what is the use is there a better way to do it if there is maybe explore it but like
with what you did in that thing so your other option was to write a bunch of configs that link
stuff up right so why do that you you had a nice elegant solution with with the reflection and
control basically with the assembly sniffing essentially and it worked well right and and
it was pretty it was basically convention
right and there's a lot to be said for stuff like that and and i don't know dismissing something out
of hand because you hear it performs badly or even if it does perform badly there might be a good
reason for it we we've had similar conversations like with the the use of static as an example
yeah right like you know, it being bad.
I don't even remember what the argument was for it.
It was a code smell.
Having a static in a non-static class was a code smell.
And I don't necessarily agree with that.
There were good points made around it.
But, you know, same type thing with reflection.
It has its purpose.
It wouldn't exist if people didn't need it for something, right?
Yep.
You know, I don't know.
What do you think, Joe?
Do you think that we need it?
Reflection is awesome.
I care a lot about my time.
And that's why I use higher order languages like C Sharp and JavaScript.
And I don't just write everything in assembly.
So I am totally on board with using a tool that makes my life easier even if it adds
10 milliseconds at startup right so i have no problem whatsoever you know you don't necessarily
want to build a mission critical real-time application completely based on reflection
but it's not going to kill anybody if you use it here and there when it makes sense. Right. So reflection, heck yes.
So like I said, we'll leave that reflection as the last one.
But I'm curious, what do you guys think?
Did you two like the inner ramblings of my mind as fodder for the show?
I did, absolutely. Always did absolutely yes these are the same
type things that we have and probably both joe and i should do the same thing write down some
of these things because i mean man there's thoughts that come up every day that you're just like
huh yeah you know well i'm also curious too so any listeners you know that that question goes
out to you too i'm curious uh how you enjoyed
you know getting to know how my mind works in crazy ways and some of the weird things that
like come to mind so uh yeah let me know if you if you really enjoyed it or if you didn't
really enjoy it well you know if you really didn't enjoy it you should probably tell Alan. Just go to www.codyblocks.net
slash episode 41.
Don't make me loathe this episode.
Alright.
We got our tips of the week still.
Yeah, yeah.
Oh no, I wasn't done.
I wasn't done.
I was just saying like,
you know,
with the main content for it.
So, yeah, I mean, Alan kind of took away my segue because this is where we get into Alan's favorite part of the show.
It's the tip of the week.
Or in this case, it really is a month.
It's been a minute.
Man, why you got to hate?
Why you got to hate?
All right. So I have two in there that are both Visual Studio specific.
But one of them is just kind of like a reminder.
So if you like working in, let's say, Chrome's DevTools, right,
and you like the console in there,
and you're really used to being able to just
go into the console and write some JavaScript on the fly
and see what's going to happen.
Hey, don't forget,
you can do the same thing in Visual Studio
with your C Sharp, right?
So if you haven't already,
you can go up to your view menu
and include your intermediate window, right?
And then when you are debugging your application and you're at some stop point or some break point in your application,
you can go into that intermediate window and you can write some C-sharp code in there,
just like you would JavaScript in your console in the dev tools.
It's immediate window, right?
Or is it intermediate?
Inter is immediate
immediate yeah intermediate i think it's they both kind of mean the same thing i think it's
immediate i gotta look it up pretty sure all right so everybody's gonna start typing i think
it's immediate window but you can't do everything like i don't think it lets you do link expression. It will not. That's really upsetting.
Oh, maybe it is immediate window.
Whatever. Bring it.
3-0. 3-0.
Yeah, whatever.
I wrote that wrong in my notes.
I could have sworn it was intermediate, but whatever.
Alright, so... We can't give him that one. in my notes i could have sworn it was intermediate but whatever uh all right so
we can't give him that one so we're gonna go with uh setting so so a friend showed me this and i
don't know how like i don't know how long this has ever been there but somehow i've i've missed
this because have you ever noticed it like you get set in your ways about doing something and
you're like you know
what it works i'll just keep doing it forever and ever and ever and ever and sometimes frameworks
can be like that where like you know that like hey there's this object and if i use this object
i can get to this thing and this and that object has this method and all i gotta do is use that
and it can it can do it for me and so the configuration manager is one of those things, right? So if you have settings in your app config, for example,
and you want to read those,
you could use the configuration manager to get to those.
But there's an even cooler way to do it, which is typed.
And that's the settings. So what you can do is you can right
click on your project, right? Why is this not cooperating? Right click on your project and go
to settings. And then in the properties, in the project properties, it'll bring up several tabs,
right? And one of them will say tab,
one of them will say settings. And if you've never enabled this on your project before,
it'll say this project does not contain a default settings file, click here to create one.
So do that, click there and create one. And then boom, some magic happens. And what happens behind is it sets up a C Sharp class called settings, right?
And it is in a corresponding designer for it.
And then those settings are going to map to whatever goes into the app config.
Only you're not going to manually edit the app config, right?
So once you're into those settings, right, and it's going to immediately
bring up this little grid, and you can type in the name of your setting, and then you can select
what the type is for it, and then you can select, you know, then you can type in a value for it.
And like I said, it's going to be typed, right? So if the type that you select is an enum,
then it's going to present all the enum values that are available.
If you say it's a Boolean, it's only going to let you pick true or false.
If you say it's a connection string, it's going to give you that.
And it'll give you an option to whether or not the setting that you're trying to create
is specific to the user or if it's
specific to the application. So like things that are specific to the application aren't going to
change at runtime, but things for the user may change at runtime, right? So it's, you know,
it's a really cool way. And when you go and look at that, what's going to happen is behind the scenes in that settings CS file, it's going to have your settings that you entered in there as default
values. But there's also going to be those values in your app config, right? So that it can read,
it can read it from the app config, or if you don't provide it, then it'll just read it from
the settings file. But then what that means is that in the old way,
if you were to use the configuration manager,
you might say something like configuration manager dot app settings
and then username.
Or if this was a web configuration,
you might say web configuration manager dot app settings
and then the parameter that you would pass in as a string would be username.
But in this way, you're going to say settings.default.username.
So now you have some type checking on your settings of it. You're not just relying on some string value coming back or some string that you're passing in.
It's typed for you.
So you have that in your favor to help you with, you know,
finding your errors at compile time rather than run time.
That's really nice.
That's pretty cool.
Yeah.
I didn't even know about that.
I don't even know how long it's been there.
Like I said, you get stuck in your ways.
And, you know a
friend showed that to me and i was like oh my god this is amazing how have i not found this so far
that's really cool yeah yeah i got a little tour of the the feature myself i just couldn't believe
it was there and then i hadn't known about it all these years huh all right well i guess now that
your mind is blown i think i think that should definitely be
like alan three michael five no no i'll give you one all right so mine actually came up recently
and sometimes in sql server it does things that just don't make sense and that's really frustrating
so you have this query that runs in a second you put it in a proc and it runs in five minutes.
And you call the proc again and it runs in five minutes.
And you're like, wait, wait, wait.
Okay, so let me just run the query that's inside the proc and it runs in one second.
And so now you're going, I have no idea what to do here.
Well, there's a frustrating thing that can happen.
Is it could actually cache the wrong query plan for whatever's inside that proc.
And it may continually do that for some reason unbeknownst to anybody in mankind.
So one way that you can get around this is you can use a hint called with recompile. And so if you're calling a stored proc that seems to be caching
a bad query plan, you could basically call that proc like exec my proc with recompile. And that
basically forces it not to use its cache for the query plan for the proc and it will force it to
basically do it like it's brand new every single time.
And so you take a little bit of a hit on it recompiling itself, but you know, if there was a problem to where it was hanging for some reason, then it'll at least get rid of that. So you're
taking a hit on it, on it compiling itself, but then, you know, typically it will run it the way
that you expect it to. So that is my hint.
It came up recently and it seriously took something down from six minutes to a second.
So it's not nice that you have to use things like this,
but it is useful to know that they exist.
Yeah, I've also had a problem with parameter sniffing, which is very similar.
And it's another issue where just a recompile doesn't do so.
Or sorry, the compilation that's cached just doesn't do so hot for whatever parameters.
And the trick for that one is just creating local variables of all your arguments
and using those instead of the arguments that are passed in.
Yeah, it's kind of ridiculous.
And it seems so crazy.
It's one of those things where this is logically equivalent
and it's stupid, but it really does work and I hate it.
It is frustrating because it's literally one of those
phantom pain type things, right?
There's no smoking gun anywhere.
You can't find it.
And then somebody says parameter sniffing and you go, what?
All right, Google. find it and then somebody says parameter sniffing you go what all right google
pure there's a really nice article actually that i can link in the podcast about this because i've
been dealing with i've dealt with a very similar issue if i fixed it with recompiles and getting
around parameter sniffing it's it sucks but you are you are all the much better for knowing about
it anyway my tip of the week is a new podcast just started up not too long ago it's actually But you are all the much better for knowing about it.
Anyway, my tip of the week is a new podcast.
I just started up not too long ago.
It's actually a daily podcast, which is really ambitious because, I mean, we have our time getting it out once a month.
And every day of the week has a different kind of focus.
So it's all related to tech-type topics, but stuff like, I guess, kind of in the periphery of actually working in tech.
So things like motivation, productivity, leadership,
technology, people, entrepreneurship,
and getting unplugged.
So it's the Hello Tech Pros podcast,
and they're actually based here in Orlando.
Got to meet them at Code Camp,
which I forgot to talk about.
It was awesome.
But you guys should check it out since you like podcasts.
Excellent.
Alright. So
with that I hope you
enjoy listening to the
ramblings that go on in my head.
And like I said
let Alan know if you didn't like it.
And
be sure to subscribe to us on iTunes, Stitcher, or more using your favorite podcast app.
So if a friend gave you this, pointed you in our direction, be sure to subscribe so that you can catch the next episode and all the back catalog.
And if you haven't already left us a review, be sure to leave us a review on iTunes or Stitcher or both.
We greatly appreciate it.
Cannot stress how much we appreciate that.
Yep.
And contact us with any questions or topics just like the guys did in this particular episode.
And if you'd like us to leave you a shout out, let us know how you'd like to do that on Twitter or just a name or whatever.
And visit us at codingblocks.net where you can find all our show notes, examples, discussions, and more.
And send your feedback, questions, and rants to comments at codingblocks.net.
Follow us on Twitter, join in our Slack, and give us reviews.
It's awesome.
All right, are we diving into Joe's head next time
is that what's going on
y'all don't want to come in here
what are all these cobwebs
it's like dark thoughts and Star Wars trivia