Coding Blocks - Silverlighting through your College Enumeration
Episode Date: January 21, 2015Coding Blocks Episode 22 is live! Organizing your code, moving from school-work to work-work, the future of Silverlight, and lots of poo-pooing! News Great testing tool suggestions from Anders Bauman:... TDDHelper, NCrunch We had to look up our new year’s resolutions – not a good sign! Awesome reviews from punforgettable, Jonno Choo, AdamTheHun, Elistaria, JeramyRR, […]
Transcript
Discussion (0)
that's what you are
unforgettable
what we're recording right now is gold
alright you're listening to
Coding Blocks episode 22
subscribe to us and leave us a review on iTunes
Stitcher and more using your favorite podcast app
and visit us at codingblocks.net where you can find
show notes, examples, discussion and more
and send your feedback, questions,
rants and comments to
comments at codingblocks.net and follow us on Twitter at codingblocks or head to www.codingblocks.net
and find out all our social media links there at the top of the page. So with that, welcome to
Coding Blocks. I'm Alan Underwood. I'm Joe Zach. And I'm Mike Routlaw. And start us off with a
little bit of news here. First of all, we wanted to thank Anders Bowman,
who commented on a prior episode and recommended two tools,
TDD Helper and nCrunch.
And I actually just installed both of these today, but I haven't used them yet.
But nCrunch will basically kind of run your tests in the background.
And TDD Helper, I'm actually particularly excited about.
It's a Visual Studio plugin that does, it does a bunch of stuff,
like generate tests and things like that.
But it also lets you hop back and forth easily between your tests
and your implementations, which is particularly annoying
if your files have very similar names.
So I thought that was really cool.
So thank you, Anders.
Yeah, and that was actually, we've mentioned the book,
The Art of Unit Testing.
Encrunch was actually one of the tools referenced in
that book as well.
Oh,
very nice.
Yeah.
So I'm looking forward to that.
Also wanted to see if you guys are interested in doing a quick update on
your resolutions,
which we've already forgotten.
Did everybody cheat and look back to figure out what they were two weeks
ago?
so if you're following me on any of the social platforms, you would know that I have been incredibly uber social in these past few weeks.
And like thousands of tweets and everything.
You probably know everything I've eaten and every bowel movement I've had.
Great.
Yep.
We actually did just get thanked on Twitter
for not sharing what we had for lunch.
Yeah, I was totally being sarcastic.
I haven't really at all.
I'm still
just as guilty as always.
I'm not active on any of them,
but the little activeness that I am is
on Twitter.
What about you?
I have been whining less about JavaScript.
I've been trying to get in touch with my UI side.
I did play around with Rust a little bit
a couple weekends ago. That was actually
really cool. I'm hoping to
transition a little bit more to Fsharp
just as a way of gaining perspective to more
functional style. So I would say
I've made some baby steps there.
And as for stop saving things
in the background true
story i created a folder called temp on the desktop and while that just sounds like a different
desktop folder because it is the only difference is i only put things in there that i can delete
so i know that you know monday morning or whatever i sit down at my computer i can just blow that
whole folder away and there's nothing important there because I've only saved temporary things in there.
Baby steps.
Baby steps.
That works.
He'll create a temp two folder for the things that are temporary that he can't delete.
That's how it's going to end up by late January.
Untemp.
For me, I have not written any articles, sat down, done any video tutorials or anything yet.
So I've still got half the month to go. I'll get something in there.
That's actually a big part of the reason why I haven't started my, uh, my Ruby training yet.
It's because I haven't found your course yet on Ruby. Fair enough. Fair enough.
I was kind of holding off on that one. Yeah. Fair enough. I get that. Um, I actually,
I made some progress tonight on the course thing because I've been given a few ideas that maybe I could do the course on.
So that might be starting up in the works here pretty soon.
So we'll see.
Ruby, here I come.
Yeah.
We'll check in again in February.
Yep.
If you don't.
Oh, man.
We're going to check up on these monthly.
It's January and you're already giving up on your resolutions?
Hey, look.
Better than that.
We're like two weeks in.
If anybody's driven to the gym in the first two weeks of January, they'll know in February that everybody quit on their New Year's resolutions.
Bummer.
We're in good company.
That's another good joke.
Also, we got several reviews here in the past few weeks, which is just awesome.
I think one of our consensus favorites was on Stitcher recently from Pun Forgettable.
It was long.
It's worth going to Stitcher just to read this guy's thing.
He basically tells us that we're all about to turn into JavaScript code monkeys anyways.
Which I'm not going to whine about.
I'm not arguing well i mean first
of all it's it's pun forgettable so how how can you uh not like that that's right absolutely
fantastic review so thank you on that we also got one from johnny chu adam the hun uh illustaria
and jeremy rr and spitz goby which i think we might've mentioned him before. Uh,
so high five.
Yeah.
Thank you to all of you guys for,
for taking the time to go up there and write reviews for us.
They're super appreciated and,
and we look forward to more.
We read all of them.
So,
uh,
definitely appreciate it.
Yep.
Thank you very much. So,
uh,
actually kind of on that note,
uh,
this episode,
we want to do a little bit of Q and a, we've gotten a lot of emails that we've been slacking on responding to. So so uh actually kind of on that note uh this episode we want to do a little
bit of q a we've gotten a lot of emails that we've been slacking on responding to so we wanted to
kind of my bad we put michael in charge of the social platform yep you're in charge of it now
crap so uh we wanted to kind of address some of those on air and uh you know of course get
you guys feedback as well too so um the first question came to us from uh i'm gonna be looking up after we start talking and i'll mention in a
second uh but it basically um was around organizing common code so um you know how do you arrange
name spaces things like that um you know so just wanted to see what you guys thought about that. This came from James James.
Um,
so I know Joe,
you're very big on this.
I have thoughts.
I will let you kick this one off.
Like what's your big deal.
So what he actually said,
uh,
when he wrote us and it was a fairly long email,
um,
but we'll pick out the pieces of it.
Like he had some projects where he worked on where it was basically dictated
that he had to put all his enums in one namespace and maybe you know uh do other things like that or
like i just threw up in my ear listening do you say that um and he he also talked about like he
had to break things out into multiple namespaces. And so every time that he wanted to do any piece of code,
he would have to bring in multiple dependencies and references and all that.
So it's something that we've all seen as programmers.
And I think a lot of it comes from people, you know,
when they start something out, they have good intentions.
And then it kind of gets out of control.
So, Jay-Z, what are your thoughts on this one?
Well, of course, I like lots of stuff so i
you know advocate for lots of folders lots of projects lots of files with lots of little
functions in them actually not that many functions but lots lots in the grand scheme of things so uh
i definitely um you know i've played a lot around with a lot of different things and
i've kind of gotten there after doing a lot of experimentation like i start a lot of side
projects and i don't finish
them. And what I do most of the
time in the first couple hours is basically just play
with the solution file.
Like, here's my library, here's my...
I've done the
enums thing, actually. I used to
call it my definitions project, where I
would have interfaces and stuff like that.
Just kind of experimenting. And the reason I would
do that would be to avoid second dependencies because I was doing stuff that I shouldn't be doing,
like having dependencies, uh, kind of cross namespaces and stuff, which is gross. So
I probably understand why that company, uh, was doing that with the enums. So, um, you know,
I feel the pain, but anyway, that's just kind of my preference right now is basically to spread it
all out. Like I would be most happy if
i had the same number of files in every folder and each file had the same number of lines
wow it's like i'm not a very ocd person when it comes to code like it'd be so nice to have
everything lined up like little soldiers so i guess i guess my take on that though when he was
talking about the the the structure of, especially like the whole concept of having like a namespace or even worse, like a project just writing like here's this uh library of things and and
i'm not using them anywhere but here you're welcome to it then you know but i can't even
think of like something valid for that like it you know generally in a real application my vote
would be like you you know keep it somewhat you know keep it close i agree with that now now
whether or not it's like within the same project and then inside
of that project you have it in a folder i'm i'm gonna have less of an issue with that it's like
in your definitions uh you know it's like maybe have you like my app project and then you have
the definitions folder that you have them in there i'm more okay with that than i am like an entire
namespace or or i should say project just for like enums as an example
well it's kind of interesting because i agree like if you have enums they need to be close to
where the definition is right like if you i don't know if you have some sort of class that has an
enum it should be near that class it should not be in some sort of common shared project out there
because it has no context where it sits which is my biggest problem with it um and then again you're also now bringing in a
bunch of things everywhere that you need to include those references that also are out of context so i
don't really like that so i definitely context is a great point to bring up here like that's all the
more reason why it kind of makes more sense to keep it close and he started this whole this started from him like going back to his email from the uh is for
interface um uh show which i believe that was like episode one yeah and and uh joe had made a comment
about he hates that they you know they have to uh start with the i yeah so because it messed up in
your in your folder directory structure.
That's what, I guess, spurred
his email here. Yeah, because I
don't like putting them in their own project.
Well, you know, one thing that's interesting
about that, and I'll cross over to Java real quick,
is I worked with some
pretty good Java developers,
and one thing that kind of drove me crazy
is, so, Microsoft has their thing where
they do I for their interface files, right?
Well, the way that they were structuring things to, and the way that they were doing it in Java is they'd have, I don't know, person.
That would be your interface.
And then they would have person, impl.
And it's like, okay, pick your poison.
I at least prefer the I because that's a little bit more explicit, right?
Like Impel, come on.
And so, and it's, again, I'm not throwing.
But that's one of those things that kind of varies by community though too.
It does.
And I'm not throwing stones here.
I mean, these are all things that various different communities and different groups do.
But they kind of took off as a convention among the Java community to do the Impels.
But I'm with you.
Like it definitely is like, you know, which battle do you like better? they kind of took off as a convention among the Java community to do the impulse, but I'm with you. Like I,
it definitely is like,
you know,
which battle do you like better?
Do you like the ample or do you like the eye in the beginning?
I mean,
the argument for the ample is at least if you do that,
it keeps the class and the interface together.
Right.
But it's,
it's not as explicit though,
is that like what happens if,
okay,
fine,
you create a person ample.
And now what if I want to create a person,
my,
my own ample, right? Like, you know, you're not the real ample now what if i want to create a person my my own impl right like
you're not the real impl now hey by the way for all of you guys listening and have no idea what
we're talking about impl is i m p l for implementation right but what i'm saying is
like you know the whole idea is you're trying to signify that hey this implements this interface
right right but now what if i need to create another class that implements that interface then you have to give it a real name yeah now it's going to be outlaw
impl yeah i mean person impl impl yeah it's it's kind of i don't know i'm not a huge fan of it
i wish there was another way to do it but loompa impl yep um so anyways i guess getting away from
that part of it.
So like talking about the enums, we definitely think they should be closer to where they belong.
And that kind of goes along with what Joe said about spreading it out.
It goes with what I feel about, you know, if you have a class that's using that enum, that enum needs to either belong in that same file or real close to it.
But what if there's four DLLs that all need those enums?
And see, and that's kind of interesting.
So we've all run across those problems, right?
If it's truly something shared, I don't think there's a problem having a common project.
Like we've done that, right?
Let's think about like anytime you're doing session type stuff in a web app.
We can all pretty much agree that you should basically try and rip out any session calls directly in your code right
and then have something if nothing else for being able to test it later is have another class it
would be like your um your shared session type stuff and then it can either use like a web
context or it could use an xml file or it could use whatever. Right. So those are good putting off on the side.
But I mean, enums are kind of special.
Yeah.
I mean, I feel like we're beating up on enums, though.
No, no.
But it's a good point.
Right.
Like, but I mean, like overall, though, like the question was, you know, just around like
it was more general than just around.
Right.
Right.
Right.
Code organization.
Because like one thing that came to mind, too, while we were talking about this was,
you know, talking about the multiple namespaces and whatnot like i'm all for you know
if you can create a well i guess really uh i'm thinking more like project level you know if you
could create a project that is self-contained and has uh you know and try to have like few
interdependent or zero dependencies on other projects,
that would be an ideal world, right?
And then I don't care if you have like five of those that I can use independently
that aren't going to have dependencies on other ones.
Yeah, minimizing dependencies is a big deal.
I think that's the deal right so like if i guess looking at this if you had if you create something that now if you were going to go look
at a map of those things and you're going to have lines going back and forth and crisscrossing all
over the place something's probably wrong you actually use that oh man that that is when it
when it looks like literally nothing but a bunch of lines, like somebody took one of those, what are those?
Man, if it's not near a kid, if the screen isn't just black,
then you're doing it wrong.
That's awesome.
But, like, I don't know.
If you were to have something like, let's say user type, right,
which is something that might be used throughout an entire application,
maybe that enum exists in a common shared place in a common namespace. But if you're
talking about something that's like class specific, then I think it should be stored closer to the
class. If it's got some sort of global reach to it, then maybe you move that out. But I think
having some sort of directive where basically it's like all enums go here and all these go here,
then I think... Oh, I definitely think as a blanket rule, that's bad.
Yeah, it should not be done that way.
But there's cases where it's good.
Because if you're talking about multiple DLLs,
at that point your enums are basically data.
It's not much different from having an XML file or something.
But back to your definitions thing,
we actually worked on something like this together
where I thought that if the core of your application, you know, there's something consistent.
If you're running a shopping cart or something and you have products, it's not a bad idea to maybe have a definitions thing that multiple projects can leverage because that product is the core of what everything is.
It's a common language.
Yeah.
So that's why I'm saying, like, if it's a global reach, if it's something that spans multiple things,
let's say that you have processes that run over here
and then your main shopping cart's over here
and they only use this product.
To this organization structure,
you have the products
is defined in, say, a separate project,
but next to that
project class is
the project, or I say
project class, the product – I say project class.
The product.
The product class next to it in the same project is the interface for product.
Well, what we're saying is you might take that interface and put it into the common project, right?
The dependency.
I guess that's why I was saying you wouldn't.
Well, so the reason I'm saying is let's say that um let's say that you have something that that processes these products to update inventory overnight right that's not going to
be in your main app right that's going to be a separate thing so now what are you going to do
you're going to copy that product interface over into this new app or would you rather have that
in in a common definitions area where all these different you know separate console apps or whatever could
leverage that same interface and that's what i'm saying so you're like arguing for the side that
the company that his company was i'm saying you look at it on a case-by-case basis right so if
you know that it's core to everything you do then it might make sense to put it over there if it's
something that's literally just like hey we got to got to buy one, get one type thing. Like if you have a sale type thing, I don't know, just coming up with something off top of my
head, then maybe that stays closer to the sales class or something like that. I guess the way I'm
going to sum this up, at least from my point of view, is that more often than not, if you had to
view this as like erring on the side of caution, then more often than not, you should keep it close so that the context is there.
I would agree with that.
Yeah, I like that.
One other thing I wanted to add, make sure your folders and your namespaces match or else I get upset.
And also, this is something I like.
So does ReSharper.
Yeah, ReSharper and uh and depend actually taught
me this next one which is uh avoid crossing the streams um by streams i mean the name spaces so
you don't want to have a name space you know a that's dependent on b and b that's dependent on a
oh it's just a nasty coast and it's easy to slip into something and it's uh can be hard to remove
as i found with my own projects. So I definitely learned something there.
Yeah, I mean, and you'll
typically see that. I mean, don't
get me wrong, everybody will make that mistake on
occasion, but you'll typically see that with newer
programmers when they're like, well, I need something over
there. I'll just add a reference to it, right?
But you can't compile
if you have circuit or references. Not on
DLLs, but you can on namespaces.
Ah. Not on DLLs, but you can on namespaces. Oh.
Not on DLLs, but on namespaces.
But the namespace is going to...
Well, I guess I'm thinking if the namespace compiles into a DLL.
Yeah, because think about it.
The namespace is really just...
If you do a using, it's a convenience for popping that fully qualified name
all throughout your code.
Right.
So all it needs is the signature information.
All I know is I did it.
I've definitely seen circular dependencies
that I've had to go back and undo.
I've definitely ran across that before
in various code bases.
To add to what Outlaw said,
I agree, keep it close to where it belongs
and then reevaluate as necessary, right?
Like, I mean, unless you are really going through a true elongated SDLC, which I've never actually been in a company that truly used the SDLC all the way through.
And if you do, it's usually multi-year projects.
If you don't have that kind of environment then refactor that stuff out
as you get in there and you notice that things
oh you need to write a console app over here
that uses the same stuff but
you don't want to bring in everything well then at that
point you start breaking out those things that are
commonly shared so keep it
close. I feel like life as
a developer is just a constant refactoring
effort. I agree. For the good days
yes. It doesn't matter
what you're doing like even if it's brand new code that you just wrote you're gonna look at me like
oh i can change that yeah i mean and that's part of being a programmer right like you're constantly
trying to improve things and make it more maintainable so i think i think we in consensus
we could say the blanket rules are bad uh you know yeah definitely down with dogma yep so all right
so moving on to the next thing and we got another email from anon we'll say i believe it was
anonymous uh not real sure but uh anonymous is rightness anonymous is that man yeah right uh
we like you no no problems there yeah uh so this one was really and i'm sure there's
a lot of people out there that get hit with this what do you do trying to graduate from school work
to work work and he brought up a ton of different uh i guess angles that that were kind of driving
him crazy because he's a junior in school right now.
And he's trying to figure out, hey, how do I get a job in the real world when I get out there?
And one of the things that he put, and I had to quote this because it was just awesome,
how do I become the tech polymath savant when I can't go get the skills that are needed,
when I can't get the job to get the skills that i
need when i don't have the skills that i need to get the job right because you need 15 years of
experience in angular yeah i mean it so but it's only been out for it doesn't matter so the first
thing i want to say though is the if you are somebody in tech and you are a junior or or even
a sophomore i don't even know at what point you can do this
go try and do an internship somewhere that's what i was going to say man i mean co-op or intern do
that because i think i think um i think after i think at least for co-op i think after two years
i think you can you can start as you're a junior so so co-oping you're basically and i co-op you
you uh you work for a quarter and then you go to school for a quarter and then you work for a quarter and you go to school for – or unless you're on a semester system.
Yep.
But basically the point is it's school on, work off, work on, school off kind of scenario.
Or if you do intern, you can work while you're still a student in school
because the requirements for you to get that job are going to be less right and it's going to make
the things that you do in school easier for you to understand because now you're going to have a
real world experience to relate those school experiences to.
Right.
So it's going to make it a whole lot easier to take in that information in
school.
But then by the time you do get out of school now to any employer that you
want to go to,
they're going to see like,
well,
you weren't just,
you know,
using your time in school just to,
to party.
You were actually trying to –
Get a foot in the door, right?
Yeah, exactly.
And not to mention like just the networking you'll get from meeting people in the field of whatever your field of choice is.
And I mean this is – like co-oping and interturning, that is regardless of being a developer or not.
Right.
Any kind of job.
I don't care what it is.
If you're in marketing, go get a marketing job somewhere.
Yeah.
Yeah, and here's the thing, guys.
Not all internships pay, but there are some that do,
and they pay pretty well, which is fairly shocking.
So that's definitely one thing to do.
But I will add as something on top of that,
when you go in to interview for something
like a job that you want to get as an internship or a co-op, interview the company too. Find out
what you're going to be doing because what's going to add the most value to you? Because I've been in
situations at companies where we'll have interns and they'll throw them on some kind of garbage
project that's never really going to do anything. really you might as well just done some sort of project at school
as opposed to find out hey am i going to be touching code that's going to be live am i going
to be working yeah i i i'm i know of at least one company and i'm debating on whether i should say
it uh at least back there for a while their big big co-op opportunity was they'd bring in people who literally just manned phones on a help desk.
Yeah, it's garbage.
And they were taking anybody.
You didn't have to be a developer or what because you weren't going to touch code.
So in terms of value that that job brought to your experience, it was pretty nil.
And also, you can go into a place thinking that you're going to be coding, and they might have something where you're going to be doing desktop support or something like that.
Make it clear.
Hey, I want to come in.
I want to be able to walk away understanding some business
behind these decisions that are made, because that's one of the things, right? Like you can
get in somewhere and you can code. It could be just like doing a project in school, but if you're
not working on real code that matters, you're not going to get introduced to the real world
problems. Like, I mean, I've had interns that I was, you know, working with where they'd be like,
well, I deleted this line of code and it worked.
And I'm like, well, what did you break by deleting that line of code?
Right.
And that's not something that you get unless you're thrown into that situation.
So did either of you intern or co-op?
I did not.
Nope.
Nope.
So I'm the only one.
And honestly, I would say, man, it was awesome.
Like, you know, at least from my perspective like i definitely feel that it it
was a big help to me um and and only and also to like further my interest in you know that uh that
that career path but um and uh i mean it wasn't like i was doing a crazy amount of coding either
really in the beginning but it was just uh you know just being more around it in general
was also just getting into the culture yeah yeah i mean there was something to be said for that too
you know and like you said the networking cannot be understated it's huge yeah i mean the the only
reason i didn't intern was i was already programming before i went into college so i
wasn't and i was making good money doing it so So I wasn't looking for that type of experience, but if I hadn't been, that would
have been my first Avenue. I absolutely would. Because I mean, if you're in a college, they have
resources, they have departments where you go to, you say, Hey, I want to get into this and they
will place you usually at a fairly decent size company company. So, yeah, usually there was like every – well, I'm thinking back when we were on a quarter system.
But you knew the time of year – well, if you went and found out, there was a specific time of year where various companies would start coming around the campus looking for people, co-op the next cycle.
Right.
So,
yeah,
it's really,
the network's really big too.
Cause,
uh,
they always say that the best hires are basically friends.
So it's much easier,
much cheaper than going through recruiter.
So,
and what you guys mentioned earlier too,
um,
they say that asking questions,
good questions is one of the best ways to do well in an interview.
So show that you care about the company and that you,
you'll probably figure out,
you know,
a few problems that they might have that you can kind of speak to
so i had a couple other things i want to throw in there too so um definitely learn fizzbuzz
so not only will um being being able to do fizzbuzz while you're asleep and uh you know
write it backwards forwards do it recursively do it a bunch of different ways know that thing
inside and out because you're going to see it. And it really does kind of cover a lot of the more basic
things. So if you get a code test, you probably do well on it. And also I wanted to make sure that
you're able to speak about things intelligently, whether it's design patterns or cloud or
programming. You don't have to know every pattern. You just have to know the role of patterns and why
people think it's important. And I think the best way to pick that up is through networking, podcasts, meetups, stuff like that.
So you can start kind of like talking basically like a programmer.
So I think that's really important.
And also Reddit Hacker News, although you can't really believe anything that you read.
Wait a minute.
I can't believe the kitty cats?
No.
Reddit is basically just a place to post puns after people post content.
Pun forgettable.
Yeah, pun and trolling, anger, rants.
Also, as I said, LinkedIn is a great way to network.
So if you meet somebody in college, whatever, just go ahead and friend them up, and you guys can start exchanging those.
Well, let's be honest if
if they're in college they're probably already on more social platforms than i am that's true
and they probably use them more than i do make sure you have a good picture on linkedin though
too there's definitely a lot of interns that you know like the first thing you do in your resume
is basically go look them up and so many aren't on there they don't have a picture you know there's
nothing on there just you know makes it look like go prune your
facebook timeline yeah that's true or or lock it down but at least with linkedin no he's seriously
get a good picture of yourself up there um and and make sure that you've kind of groomed it to be
what you what you want to present right like it you may not have a resume built yet because you
don't have any experience but you know let let them know what you're looking for.
Have your school in there.
Have your study.
Just some things that you've done, like if you've messed around with any open source projects.
Put a little bio or something about yourself on there.
Yeah, and it shows that you're interested in actually becoming a professional and not like you playing Xbox and just what you know mom kicked you out of the house so you need a job what was that call of duty right right
um a couple a couple other things i want to touch on though real quick going back to
if you do the internship and i also want to touch on if you don't but if you do the internship
another thing to know about that that is key that we didn't mention is – well, actually, Outlaw said that his transitioned into it.
A lot of times if you do a good job at your internship, they'll want to hire you and talk about a way to get the skills that you need to potentially get the next job you want.
I was just saying that it transitioned into me co-oping a 40-hour job.
Right. Like, cause originally, originally when I started co-oping,
it was,
you know,
uh,
you know,
co-op for a quarter and then go to school for a quarter and then co-op for a
quarter and then go to school for a quarter.
But,
um,
gosh,
I think,
I guess it was my third time.
It didn't,
you know,
just as luck kind of would have it,
the way it transitioned was,
uh,
you know,
it wasn't just for a quarter.
It was for, year or so.
It wasn't like for a finite period of time like it originally started out to be.
And that situation might have just been unique.
Year mileage may vary, but yeah.
It's definitely a way to get your foot in the door. And like I said, if you do a good job while you're there, then you might have an offer at the end of it.
And then let's talk about if you don't go that route.
You don't have any skills because you don't have a job.
And you don't have a job because you don't have any skills.
Pretty much what I'd say is the same thing I'd say to anybody.
If you go on a job interview,
it's like studying for a test, right? If you go to a place that says that they want C-sharp or
they want Java and you go in there and you have no idea about OO programming and you walk in the
door completely blind, you didn't Google what common Java interview questions are or any of
that kind of stuff, then you set yourself up for failure yes there are you probably don't want to try to go
into a programming internship and not already know the first thing about programming well not
internship i'm talking about like the job interview so let's say that you've made it through your
senior now you're trying to get out there in the real world you didn't do the internship
right so my thing is is, is first off.
First off, how'd you miss all of that in all your classes?
Well, no, I mean, so here's the thing.
I've interviewed a fair share of interns.
And the thing is, they might know they've heard the word polymorphism.
You tell them to write it up on the board and a lot of them struggle, right?
Because, I mean, let's be honest.
If you haven't written a lot of code outside of assignments, then a lot of those concepts are sort of foreign to you, right?
It's like any test you study for.
It's gone the next day.
Yeah, I don't need someone to regurgitate the definition for me.
I need someone to actually do the work.
Right.
I just feel like we could do, as we get into interviewing, I just feel like that could be an entire episode just by itself.
Oh, there's no.
Solely on interviewing.
No question.
But I definitely think, though, I mean, just the short end of it is if you're looking at jobs that are saying they're going to pay $35,000 a year,
but they require 10 years of C++, five years of Java, whatever, then chances are you don't even want that job. And I'm not trying to be facetious here,
but another thing you have to keep in mind is a lot of times recruiters get a
hold of those job postings and they put all that garbage on there.
So the company might say, hey,
we'd like to have somebody that has this experience,
but it's not necessarily a necessity.
And that's why I made the joke about needing 15 years of Angular experience
because I've seen a lot of times too where,
I don't know if it's the recruiter or the company, but somewhere along the line there was a disconnect.
And it might not even be – it could be a company, but it could be some HR person in the company who might not be technical.
And someone tells them, oh, we need Angular experience. And so they just throw out like, okay, well, this is the type of number that I normally associate to things.
So I need somebody with X number of years of experience.
And it's only been there for three.
Right.
Right.
And when I'm hiring someone, I don't care if you have two or three years or one year of whatever.
I want to know that you're not going to make my life harder if we hire you.
Yeah.
That's all I really care about.
That is key.
And, I mean, honestly, if you walk into an interview like that
and you're a novice, you're a beginner,
be prepared to write some code,
whether it's on the board,
whether it's in a computer.
If somebody does something,
then you want to do that.
And then one last part on this,
what makes a rockstar programmer?
Anybody?
Is this a joke?
No, no.
This is one of the questions that he had
in regards to it no i know it was but it was just the way you put it yeah i think that's it's almost
kind of like a dirty word nowadays a lot you'll still see companies occasionally say they're
looking to hire ninjas or something but that's kind of like uh i hate that term yeah and it's
kind of gotten a stigma attached now so uh i would definitely not put rockstar on your resume no but i would you agree that probably it for me if i'm working with
somebody whether it's whether it's a beginner or an expert i want them to be resourceful
everything else can be learned taught whatever but if if somebody's first thing is to come bother somebody else
because they didn't take the time to look something up
or they weren't thorough, then –
It just makes you want to send them to the –
you want to send them back a link for let me Google that for you.
Right, right. No, seriously.
We should include that as a resource of the week.
Yeah, definitely.
Somebody that's resourceful is probably one of the biggest things.
I mean, there are people that are,
we've talked about wide versus deep
programmers before. I don't even
care. Just
if somebody gives you
something, be resourceful enough to go
try and figure out what you can, and if
you have a question about a part of the implementation,
then cool. Let's do
it. But don't come to me after you get a problem and be like, hey, what do I do?
Being resourceful, though, that's like a personal trait.
Like how do you even – you can't teach that.
I think you can.
Yeah, when you're kids.
It's a tough one.
But that is probably one of the most – I think that people that can become
rock star programmers are the ones that
just they're stubborn they they can't give up because they have to succeed right and and to
do that you have to be resourceful you can't just pester other people because you never get anything
done and they won't get anything done and then everybody would be frustrated so i think most
rock star programmers are tinkerers they're tinkerers right they're people that they get a
problem and then they start digging until they find it and and that's not saying that you have to silo yourself
so that you never ask people questions there's definitely a point where no there's definitely
value in like asking but there's a difference between like getting to the point where you have
enough background information on it that you can try to speak intelligently to the problem to whoever you're you're speaking to
versus hey i haven't even bothered to read the first sentence on this problem will you explain
it to me like i'm five because you know because at that point like yeah ain't nobody got time for of that we will leave we all have we will leave a link we will leave a link for those who have
not been blessed with what we just uh heard we we all have jobs to do this my point though so like
you know you can't you can't pester me about uh something if you haven't even
if you haven't even taken the time to look into it for five minutes, why should I take any interest in helping you solve it?
It's kind of like that old saying about – what is it?
Oh, God.
I can't even remember it now.
Hold on.
I'll come back with it.
Also, I wanted to throw out there, starting slide projects is a good way to kind of do you know, do some like real world kind of programming and having something to show off on the resume or talk about.
And if you do that, use Git because then you can use pull requests.
Word.
And honestly.
I know what I was going to say now. Sorry.
You not even taking the time to look into it doesn't necessarily make it my problem.
It's kind of like going back to that old saying,
a poor planning on your part doesn't constitute an emergency on my part.
Right.
It feels very similar to that cliche statement.
I would agree.
But the side project thing that Joe just brought up,
one of the beautiful things about this, start it.
If you start doing things wrong or if it's something that's enticing enough other people will come along and if they're using git then you could absolutely get them to
put in pull requests and then all of a sudden you get other people's perspective on your own code
so um definitely an interesting thing all right outlaw move us into the next one can get be my
resource that i like get every episode You should just do everything in Git.
Yeah.
You should make like, you know, use Git for your file system backup.
Okay.
So, oh, I'm introducing the next one.
Yes.
So, Maze?
Maz?
Maz?
Maz?
Not sure.
M-A-A-Z.
Maz.
Maz.
Okay.
We'll go with that.
Yes.
And if we're wrong, blame Alan.
Yes, fair enough.
Why program in Silverlight when it doesn't support many mobile platforms?
It's kind of a loaded question.
It's a fairly easy one to answer, right?
There's some dirty jokes that I could give examples of, but yeah, I mean, the answer is just don't use it, right?
Yeah.
Yeah, unfortunately, it's pretty much dead, whether Microsoft has officially announced it or not.
Silverlight 5 came out in 2011.
Last minor, minor security update was in July of 2014.
So bye-bye.
My understanding from reading about it is that they're supporting it from the point of view of like break, fix, or security.
Till 2021.
Right.
But it's not under, it's dead.
There's not, they're moving away from that.
Right.
Yeah.
Yeah, it's not really something you want to add to your resume now.
So the real question shouldn't be like,
why program in Silverlight when it doesn't support many mobile platforms?
The real question there is why program in Silverlight?
And that's a very legit question and probably one that you should ask yourself
if you're doing any new stuff.
Well, the real question is really what should I do instead?
Yes.
Right?
Yes.
And there are a lot of different options.
We've talked about Xamarin quite a bit.
Cordova is another one.
PhoneGap, Titanium, Accelerator.
So there's other options.
I don't really know enough to kind of speak to or recommend any of them in particular,
but.
Well, I will tell you this.
If you are interested in doing cross-platform mobile development, probably titanium should
be one of the first ones that you look at simply because it's free.
Um, I, and I think the only thing you have to pay for is like the, um, the app store
license developer license.
If you want to push into, into, uh, like an iPhone or something like that.
Cordova is an Apache project there.
Cordova is.
Yeah.
Um, but basically it lets you write HTML and JavaScript.
So yeah, really, if you want to write things on all platforms and HTML and JavaScript is fortunately the way to go.
Yeah.
And actually my tip, my tip of the week
is actually going to be one of those at home.
But yeah, so don't do silver light stuff.
I've been a big fan of like, you know,
this is definitely going against
probably the current market trends,
but like my personal take is
unless let's take games out of it
for out of the equation for a moment okay um and
i and i say that because game development you typically want access to more iron right you you
want more processor um but so aside from games though unless you have need for some of the low
level subsystems on a mobile device you know'm kind of with the opinion then, why are you bothering with the app?
Just do the HTML.
Just do the mobile site for it.
That's my personal opinion on it.
I know that there's a lot of companies out there, though, that is from a branding perspective.
Yes.
So there's definitely value in having your icon on that homepage.
I don't know i definitely see like a wider reach there's if it's a mobile friendly but uh site i will say this though a well done there is
a nice convenience to having that app icon on your phone or on your tablet to where you're not going
to a website right yeah but you can also just you can make it a wrapper you could no but i mean no no no
what i was gonna say is uh like any of these mobile platforms have the ability to save that
page as an icon on your your home screen yeah and i haven't seen too many people do that you're
talking about the web apps that you can do like on ios or anything i'm not even i'm not even talking
about you know so there's the one extreme where you could make it feel like a native application that is just technically – I'm thinking of like the Amazon Cloud Reader app where it was just an app that ran inside of Safari on iOS, for example, where you could save it to your home screen, but it was nothing more than a web page in reality, but it totally didn't look or act like one.
It felt like you were inside of an app.
Right.
I wasn't even talking about that.
I wasn't even really thinking of that extreme when I was saying that my preferences for the web page – because I've kind of gotten out of the mood, too, for apps in general.
I'm not trying to start – Take care minority there yes totally i totally i totally am and i totally get that i'm on board but here's the thing and in this next statement
let me let me preface this by saying i am not trying to start any any flame wars okay but
android ruined me for apps god i'd say ios did for me honestly here's
the reason why okay here's the reason why it's because in in so each store ios versus android
they have their own little models there for for how things are sandboxed right and ios takes the point of view of hey
let's install the app and then as you go along i'm going to ask you for this permission hey can
i use your camera no okay cool hey can i have access to your contacts no okay cool whereas
you know android is like the the fear tactic right like up front you know it's everything
up front like hey man they want access to all your contacts, all your text messages, all your phone logs.
You okay with installing this app?
No.
Yeah, I'm definitely not installed apps.
No, I'm really not okay with installing that app.
And you don't like them telling you about that?
Well, no.
So I definitely appreciate them telling it. the way ios does it like you know hey as this app needs it it'll ask and you can accept or deny
those individual uh permissions you know as as it's requested versus android's approach which
is all up front it wants these 10 permissions and you either take them all or you don't install the
app but it was because of that that android kind of ruined me in the habit where i got to the point where i was like you know what if this company provides the same thing by a web page i'll go to the page i'm just
gonna go to the page because they can't access it yeah i'm gonna hit it through a browser and and
if they don't maybe someone does provide the same thing through just a browser and and i kind of got
out of the habit of the apps i think that's's kind of the nature of how people who develop apps, though,
just really abuse what they're using on your phone.
And it's a shame.
That's the way it's gone.
I really think that that's a problem in the Android model,
that it's surprising that it has lasted that long.
But you can write native apps with quotes around it in html and javascript now that's
what stuff like cordova and whatever does you can yes it's not a great experience but now i know that
for a while there i don't know uh if apple's still bad about it but uh there for a while there if you
wrote if you had a web page a mobile web page and you had an app that was just nothing more than a a wrapper around that
and you tried to submit it to the app store they're like depending on your reviewer you might
not uh you might not have which makes sense because you can change out the back end on it real easy
and that's what they don't want well yeah well going back to that we mentioned titanium phone
gat cordova xamarin there's another one that's actually kind of interesting that windows is
doing now for their cross-platform type stuff and it it's called WinJS. And we'll have a link in there.
And it looks kind of cool. Who knows how long they'll support it. But right now, kind of neat.
All right. So on to resources we like. This is actually not really a resource,
but I like it a lot. So I threw it in here. This is a really cool blog post about generating mazes.
And this is actually by a guy that's really cool.
I forget his name.
I'm going to look it up right now.
Cool guy.
Cool guy.
And he wrote a really cool book too.
So cool you forgot his name.
Bob Nystrom.
Right?
Well, with a name like that.
Well, if you went to this blog post,
you wouldn't be picking on me right now because it's awesome.
He's come up with – he's kind of cobbled together a couple different algorithms and just ends up kind of creating this cool little maze with rooms.
And he talks about how he created it and why and the kind of patterns he put to use.
And he's got a really cool way of visualizing it.
So it's neat and it really breaks it down really well.
It's a really well-written article.
I mean there's dungeons.
So what's not to like? Yeah, exactly. so who hasn't tried to create a video game right
so well that is cool yeah and i also wanted to pitch this book because i ended up buying and
reading a little bit and it's um game programming patterns and what it is is like he kind of looks
at like design patterns specifically from the viewpoint of games so he looks at patterns that
are used widely in games um like the command
pattern and i forgot there's a couple others uh in the book i'm still in the beginning but it's
just a really cool take on it and it's a real practical view of these design patterns and so
i'm still reading it but i just thought it was really good and i dare you to not like this blog
post holy smokes that thing is insane if you know but if you just click the image up at the top,
okay, you got to go to this link
and at least click that first thing
and watch it do its thing.
It's pretty amazing.
Yeah, and he's got the source code for it.
Yeah, I feel like I'm watching like a,
it's definitely like watching Snake.
Yeah, except cooler after you see it finish.
And he pretty much walks through
every single design decision.
Or fractal pattern.
So I've actually been looking at maze creation and stuff,
and there's a lot of cool information out there.
So if you're looking for a project to do, this is a pretty good one.
Are you into game development?
I enjoy gaming, and I enjoy programming.
So I've definitely started and never finished many, many, many, many, many things.
That's kind of interesting.
While I enjoy gaming, I thoroughly do not enjoy the idea of writing a game.
It's never been anything that interests me.
Yeah?
I do, but I spend so much time on it.
Have you played Destiny yet?
Man, ever since Christmas
when Sony PlayStation Network was down,
I...
Oh, my God.
How did we not talk about...
Oh, God.
Yeah.
Ever since...
You said it once.
You said it two more times and might show up
i feel guilty already saying it the one time we'll bleep it out i haven't played it yet
that'd be awesome uh now i want to say it two more times yeah we don't want them shutting down
our site um but no i haven't played it yet uh at any rate very cool awesome resource
so titanfall no no neither of you have titanfall you play titanfall no i thought you said you did
i've played it on the pc i don't know but didn't you say you played i played it on the pc it was
you yeah it's fun yeah it's a lot of fun i like it you've watched it no i've played it you did
play yeah i've played it now do you you like it? Yeah, it's fun.
I still...
Call of Duty has ruined me, man.
Oh, Call of Duty is so good.
It has ruined me.
Twitch.
So, but you said you haven't played Destiny yet.
No.
I know you have.
I haven't.
You've played Destiny.
So, here's what I mean is that, like, Call of Duty, the gameplay just seems so much faster.
In Titanfall or Destiny, I just feel like,
all right, come on, let's do this already.
I always thought Halo was slow, and Destiny is a Halo game.
No matter what you say about it, it really is.
It plays exactly.
Even how you jump, it's like, boom.
Dude, after you go back to Halo, after playing Call of Duty,
you feel like it's child's play.
Well, yeah, but I mean,
I still have a lot of fun with Halo,
but I will say, huge letdown, okay?
Because, what's today's date?
So, well, it is not going to matter. The point is, there's, what,
a few more days left of Halo 5 multiplayer,
and I kind of, I'm disappointed.
It is not...
One, oh my god, is it slow.
If the gameplay...
Like we mentioned Titanfall or Destiny.
If I'm thinking that those are slow,
oh my god, Halo 5 is so slow.
It's like running through molasses the whole time.
I don't know if it's just because they're getting hammered to get on a server,
but, yeah, I'm sorry for that rant on gaming.
This is what you get for bringing up a blog on gaming.
Yeah, yeah.
Call of duty, man.
So let's get into the tips of the week now.
Go ahead, Outlaw.
Well, so I was going to mention, like, as the resources I like is Git.
So if you're not already using Git.
Always.
Git.
Oh, my God, I love it.
So here's an awesome little Git tip for you.
So let's say you have some file, and there's a bunch of different changes in that file,
and you want to commit
only some of those changes all right but not all of them and you don't but you also don't want to
have to delete the things that you don't want to commit okay and what i mean by that is like maybe
maybe you have some things in there they're like debug statements or a method that you're not quite finished with or whatever.
But you don't want to delete it, but you don't want to commit it either.
But you want to commit the other parts.
So you can interactively go through a file and commit the pieces, or let me say stage, the pieces of the changes that you want to stage to the commit.
So what you do is, now this is git command line, okay? So if you're not on command line with me,
we already have an issue here, but definitely get on command line. So you'll do a git space add space dash p and then the file name and then it'll interactively um bring up
you know each individual change and ask you you know do you want to stage this one or not
right and and there's a whole slew of options like it'll bring up probably a total of like 10
different options that you can use so it's not only, do you want to stage it or not stage it,
but you can also say,
you know what,
let me decide later if I want to do that one or,
you know,
things like that.
So,
um,
you could go to the man page for get ad,
just Google it and it'll be the first link that'll pop up.
And I was P as in like parts or pieces,
I think partial patch.
Okay.
And sorry.
So thank you for clarifying that.
Um,
and you can, you can, can uh you know select only the
pieces so like maybe maybe you have a change at the top of your file that you do want to commit
and a change at the bottom of the file you don't want to commit so when it when it brings up that
first change that you can say yep that one or no not that one one. Now here's another trick. If you have already, let's say, let's say
you have this class, uh, foobar.java and you've already, uh, you already did a get add foobar.java.
So it's already staged for your next commit. And you're like, oh crap, I didn't want to commit
all of that. There's some of those change sets that i don't want to commit no problem git has you covered you could do the same thing but in the opposite direction by doing
a git space reset space dash p again like patch and then the file name and it'll do the exact
opposite it'll say do you want to unstage this commit? Or not, right? And again, it's going to be
the same options that it's
given you, but in this time, instead of
asking you, do you want to stage the commit, it's going to ask you
do you want to unstage the commit? So does it keep
your file changes still in place, but
it's only staging the changes? So what you'll
see, what you'll see after you
do this operation, again, by command line,
is that after doing this, if you do a
get status, status okay get space
status what you'll see is in the case of foobar.java you'll see foobar.java added as a uh a staged
file to be committed and as an unstaged file to be committed very nice and if you do if you then do
a get diff on foobar.java you'll see the parts of foobar.java that have not been staged for the commit.
That's beautiful.
So you keep all your changes.
Yeah, and it's a great way of committing untested code.
I mean, it's like there's so many little awesome bits about git like that that are just – I don't see how anyone could not love git.
It's like committing untested code.
That's a good point.
I'm sure it works without this debugger statement.
Yeah, and the thing is
if you accidentally forget that one curly brace
while you're unstaging your staging,
yeah, you just broke everything.
Or JavaScript, you don't commit that alert
and now suddenly everything's broken.
So now that we're poo-pooing all over his tip...
You definitely have to... and now suddenly everything's broken. So now that we're poo-pooing all over his tip.
You definitely have to, you know, you want to be careful about that,
but that's just general, like anything that you're going to commit,
you want to be careful about.
I actually have used this, so I just like to poo-poo things.
Okay.
I feel like we should have a link to Poo-Pourri in the should that's going in resources we like it'll probably be an affiliate link so if you click it and buy the
resources you're done with here's a resource we like there will be a link. All right, so mine, I actually have two,
and that's only because of this particular episode.
So the first one is, now that we also poo-pooed on Silverlight,
I will say that if you are using Pluralsight
and you are in a browser that has Silverlight,
you will get much better results if you go to the settings on the Pluralsight video and say
use Silverlight instead of the HTML5 web player. The HTML5 web player is terrible. It buffers all
the time. It restarts. It's just, I don't understand why it's so bad, but it is. If you
use Silverlight, it works perfectly every time. If you speed up the the playback it doesn't skip and pop and it's i don't get it so
that's tip number one seeing as how we plug plural site all the time the next one um going back to
the silverlight thing for mobile there is another um framework out there called ionic and if you go
to ionic.com or ionicframework.com, it's basically AngularJS,
their version of doing cross-platform mobile,
and you can actually, after you write the application,
you can deploy it to iOS, Android, all these other platforms.
Isn't that ironic?
Isn't it Ionic?
So that's my tip.
I think it's pretty cool.
If you already are familiar with Angular,
this is a really nice way to get started on doing a mobile application
because they have a lot of built-in theme support and all that kind of stuff.
It says here you need 10 years of Angular experience.
That's accurate.
So there's my tips.
All right, and I just changed my tip.
So I don't want anyone poo-pooing anything so i've got to recommend the joel spolsky books why didn't you change yeah i mean like
literally he just changed it like just right now wait what are we talking about like an entire
library unforgettable comment is this an entire library of books no it's only like three there's
uh there's actually two joel on joel on software books which are collections of essays that he kind
of curates and he's got a couple in there too but actually what got me thinking about this was the
the first question we talked about with the um kind of you know going from school work to work
work i think a big part of actually kind of learning the vocabulary like we talked about
is actually the business vocabulary as well, like the business of software.
So I think he's got at least three books I know.
I mentioned two, and the other one is Smart and Gets Things Done, which is – these are all great books, and they're kind of from the business side of software.
So you're going to have a lot of really good articles in there about basically, um, software development, life cycles and shipping software and things like that,
or that are really important to be able to talk about.
So I did just,
uh,
drop that in as my tip and the factory,
factory,
factory,
factory.
That's right.
That's in there.
Yep.
I feel like you gotta say what your original one was there.
We can't let you get away with this.
All right.
My original tip is for you putting forgettable.
There's another,
another book,
great book by Douglas Crawford called, uh, Crockford called JavaScript, The Good Parts.
And what I like about it is that it focuses on the good parts.
And it does have a collection of not-so-great parts that are listed in an appendix,
but it doesn't focus on them.
It's a positive book, and it tells you all the cool things that you can and should do.
So if you wrote a book, it'd be a negative version.
No, not if I wrote it this year.
JavaScript the bad parts.
No, it would be there's parts of JavaScript.
It'd be a question.
Just JavaScript?
Right.
Well, I'm staying positive this year, so JavaScript the good parts.
All right.
So I feel like,
uh,
one of these books could help out with,
uh,
you know,
like,
you know,
a programmer had a problem.
He decided to use threads.
Now too has he problems.
Nice.
I like that one.
Not that I don't like other ones.
Wait,
what?
Anyway,
thanks for listening to coding blocks yeah so that wraps up this
particular show hey just so you guys know we did get a couple other questions and we'll just have
to fit those into future episodes so that this doesn't go on to a 10-hour show um but uh yeah
yeah but like we said before though uh we really do appreciate any feedback you guys can provide.
So be sure to leave us some feedback on whatever your platform of choice of getting podcasts is, whether it be iTunes or Stitcher or Player FM or some other app that's out there.
We really appreciate the reviews, and they do go a long way to help other people to find us as well.
And we appreciate that.
And real quick,
we did get a comment saying that they couldn't write a review on Stitcher.
And if you,
that was from the mobile app.
Yeah.
If you are on mobile and you go to stitcher.com,
you don't get it.
You actually have to either be on a desktop or you have to go to the web page as the desktop version in order to
see that so total first world problem yeah it's completely agreed it's probably looking on his
note three um so uh anyways uh visit us at codingblocks.net where you can find our show
notes our examples discussion and more and we do leave pretty tremendous show notes so please do
visit if we say so ourselves
yeah yeah we think so and this will be actually www.codingblocks.net episode 22 yep and also make
sure to send your feedback and questions to comments at codingblocks.net and we will talk
about it on air and also make sure to follow us on twitter and if you go follow us on linkedin
that would be awesome and uh you know
if you friend us we would probably endorse you just saying
wow do you need 10 years of angular experience well now you got it
I feel validated by my number of LinkedIn friends
god I hate social wait that's supposed to be my answer
all right everybody we will be back soon God, I hate social. Wait, that's supposed to be my answer.
All right, everybody.
We will be back soon.
There are two types of people in this world.
Those who understand recursion and those who don't understand it.
There are two types of people in this world i'm smiling
wow tough crowd