AJ:
Okay. Let me try to figure out why I have no sound. I’m gonna quit Skype and restart it. Call me back afterwards.
CHUCK:
Okay.
JAMISON:
Sucker! We’ll never call him back in.
CHUCK:
[Evil laugh]
[This episode is sponsored by ComponentOne, makers of Wijmo. If you need stunning UI elements or awesome graphs and charts, then go to Wijmo.com and check them out.]
[Hosting and bandwidth provided by the Blue Box Group. Check them out at bluebox.net.]
CHUCK:
Hey everybody and welcome to Episode 26 of the JavaScript Jabber Show. This week on our panel, we have AJ O’Neal.
AJ:
Coming at you live from the German fortress of Bettendorf, Iowa.
CHUCK:
You know, you say, “comin’ at you live,” every week and it’s always time delayed. I mean, that’s a podcast, right?
JAMISON:
This is not, “comin’ at you dead from the zombie apocalypse,” or something.
AJ:
I’m live right now, Okay? And I’m in a town called Bettendorf that sounds like it should be in Germany, but it’s in Iowa.
CHUCK:
[Chuckles] Okay. We also have Jamison Dance.
JAMISON:
Hi guys, I’m just still in Utah still.
CHUCK:
Utah, woohoo! We have Joe Eames.
JOE:
Coming at you… I guess live, from a closet at Domo.
CHUCK:
Sweet. What are you doing in the closet Joe?
JOE:
[Chuckles] I’m not getting … by that.
CHUCK:
And I’m Charles Max Wood from Devchat.tv. So we were discussing what we were going to talk about this week because I’ve been a little bit of a slacker and haven’t had the time… so, I guess I’m not a slacker; I’ve been too busy. I haven’t had the chance to plan out episodes for the next few weeks. So we were talking and Jamison mentioned that we could talk about community and I said, “Yeah the community kind of confuses me.” And I think I got an in-chat chuckle from that. Anyway, so I thought, let’s talk about it. Let’s see if we can make sense of this thing.
Because it seems like from what I can tell, there are almost like different opinions communities out there, that’s kind of fragmented. You have the people that follow everything that Douglas Crockford says and then you have the other people that follow everything that Brendan Eich says, and you have the other people who agree with somebody else and then some people are talking about Node and some people are talking about the browser; and even within the browser, some people are talking about jQuery and some people are talking about anything but jQuery. Am I reading this wrong? Is it really kind of that messy or am I missing something?
JAMISON:
I think you summed it up pretty well and I think that’s part of what makes JavaScript really exciting. Part of that comes from the fact that it’s so large, you have these people that have been doing JavaScript since ‘95 and you also have lots of people who are very new to it. And some of them are really new to programing as well and kind of just getting started, but you also have some people from other language communities who are bringing in good ideas from other platforms to JavaScript. So I’m kind of just like. [inaudible] Yeah, very true. But it’s so large, and there’s so much churn in it, I guess that there’s always something exciting going on. And I think we always praise NPM and how awesome it is and that’s like a direct result from people coming in from other languages that have solid package management in different and harder to use and develop for ways, so there’s lots of benefit, I think to having this wide variety of experiences.
JOE:
Is there truly a more ubiquitous language than JavaScript? I mean, it’s so cross discipline cross you know, community. It’s barely getting its own community because so many people that are in the JavaScript community are really in another community; they are in the Java community or…
JAMISON:
Or they are designers or something.
JOE:
Yeah exactly. So they are already from their own community and they come in to this and start doing more and more and more JavaScript and getting more and more involved in JavaScript. And so, it’s like, it’s just this crazy amalgamation of people.
JAMISON:
I think that’s why there’s so many like cool science projects. Like I saw the other day that Mozilla has taken this 3D game engine Sauerbraten 2 or something; I guess it’s used for couple of open source 3D first person shooters and they have it running inside the browser so that they can benchmark webGL and their JavaScript engine for running 3D games.
There’s also this group of people who are doing lots of robotics with JavaScript. I think Rick Waldren, I don’t know if he’s the head guy but he’s definitely involved in that. He gives some talks on it. So there’s like the RobotsJS people that have figured out how to communicate on like serial cables to their Arduino robots and stuff. I don’t know. What other language can other designers who know very little programming make a little button move and you can also have some guy doing like statistical processing of huge tons of information. It seems really cool.
CHUCK:
Did you say, “Make a little button move” or “make a little butt move?”
JAMISON:
[Chuckles] Depends on the designer.
CHUCK:
I must be ill. I’m not thinking straight. Sorry. Yeah, that makes sense. But at the same time, I mean, you know, since have so many different things going on, I mean, how do you know which ones are most relevant to what you are doing? So for example, I mean, when I was really new to JavaScript, and by “really new”, I’ve been programming in it a couple of years but had really only scratched the surface of what jQuery gave you. You know, didn’t know anything about any of these guys and I didn’t know why the opinions were so important to people.
AJ:
Rephrase the question?
JOE:
Yeah, rephrase the question.
CHUCK:
So basically, how do I figure out essentially who’s right or who’s right for me to be paying attention to? I mean, should everybody be paying attention to Crockford or are there certain people that should become involved in the different part of the community.
JOE:
I don’t think everybody should pay attention to one person; because if you do, then… one thing that’s just great about as we were talking about JavaScript is that there’s so many wide disciplines coming in and bringing in their influence into the JavaScript. And so, you don’t want it to become uniform; it needs to stay header genius.
CHUCK:
Right.
AJ:
I think everybody should at least watch the 8 videos that Crockford has. I mean, whether or not you subscribe to his religion or not, you should at least watch it because there’s a lot of valuable information there. Same thing with the jQuery guy; you should at least get on his blog and go through some of those popular posts he’s got because there’s some really valuable information there.
CHUCK:
You’re talking about John Rezzig?
AJ:
Yeah, John Rezzig. Sorry, I shouldn’t have just called him, “the jQuery guy” like that.
JOE:
Then you have to call Crockford, “the JavaScript guy,” right?
AJ:
“The Yahoo Ecmascript guy.”
CHUCK:
Who worked at PayPal, didn’t he?
JAMISON:
Yeah.
AJ:
I didn’t hear that yet.
JAMISON:
I’m like sort of tangentially part of the Ruby community. Ruby was one of the languages I used when I was getting started and it seems like they are a lot more unified — both for better and for worse. I don’t know. Maybe Chuck, you could compare and contrast them because you are much more involved in Ruby than I am. But it seems like people are interested in lot of the same things. And like right now, there’s this big focus on software engineering and object-oriented stuff going on in the Ruby community, where JavaScript is just kind of way more diverse. I don’t know. You don’t get a sense that there’s one thing that people are really into right now.
CHUCK:
Yeah, I mean it is and it isn’t. I think every community has the little groups out there that are doing their own thing and exploring areas that are a little bit different from sort of the mainstream in whatever language or community that’s out there. And Ruby definitely has those, but it seems like in Ruby Conf and at Rails Conf, you do tend to get more of a homogenous message from the different talks that you attend. People tend to care about the same things. And a lot of it does kind of center around good coding practices and things like that, more than certain idioms of the language or certain styles or whatever. Everybody seems to adopt the same sort of coding style.
And I think that’s one of the things that really threw me off with the JavaScript community was just that I come in and in Ruby if you come in, you can kind of get an idea of who the innovators are out in the space and what they are up to. And you know, you can then figure out who is doing the stuff that you are really interested in. And in JavaScript, it just felt way more fragmented and there’s a lot more noise out there that you have to sort through before you can kind of figure out where you have to live and what’s really going on that’s important or interesting to you.
JAMISON:
Well, I see that as a plus because it’s not that there’s more “noise,” it’s that there’s more “stuff” happening.
CHUCK:
Right.
JAMISON:
Like within one language, you have really… I guess not innovative, event-driven programming on the server has been forever; but a really innovative, easy way to do event-driven programming in Node and all these other cool things that it brings streams and just sweet stuff like that, but also really advanced frontend stuff. So I think it’s cool to be able to sit in one language and do so many different things because I get bored if I stay doing one thing forever. Like if I was just a frontend guy, I would get pretty bored. So that’s a positive thing for me.
CHUCK:
Yeah. I can see that. At the same time though, I think if people who are new to the community can kind of get lost its not as… not everything is available to them, I don’t think.
JAMISON:
You are saying it’s not as cohesive like if you just wanna learn how to do frontend stuff, you don’t really know where to turn when you are first starting out?
CHUCK:
No. for example, if you come in to Ruby you know, everybody kind of pushes you down the same track you know; “Here’s some of the things you need to look at.” “Here is some of the ways that you get involved.” “Here’s some of the things that pretty much everybody has tried that you ought to look at.” And in JavaScript, since everybody is working on such different projects, you know, it’s like, “Well, that all depends; do you wanna use Node? Do you want to work in the browser? Do you care about jQuery? Do you not? Are you looking for more code organization stuff or you are looking for frameworks that get this stuff out of your way?”
Anyway, there’s not a clear path which you know is definitely both a good thing and a bad thing, but I almost feel like you need somebody who understands sort of where you wanna be at and then they can kind of point you in the right direction as opposed to in Ruby, you start looking and you tend to get referred to the same places to get started.
JOE:
So I have an interesting question about Ruby, Chuck. I heard that as a whole, the Ruby community has kind of moved away from active record. Is that true?
CHUCK:
I think it really depends. I still use it in Rails. There are a lot of people out there though that like some of the other ones. If you are doing NoSQL, obviously you can’t use active records, you have to use something else. I don’t know. I think a lot of people just go with what the default is in Rails.
JOE:
I didn’t mean to sideline the conversation or shoot off on a tangent here; I was just kind of trying to compare in my mind what you are seeing about the Ruby community and JavaScript, because like in JavaScript, there’s no clear winner on not only within the MV* frameworks, but should you be using an MV* framework. And so I was just kind of wondering, you know, the Ruby the community as a whole, does it move from things that have become popular now than then become passé and people realize, “Oh, that’s as good of an idea.” I mean, I know that in other languages, they consider an active record pattern to be not as effective as like a repository pattern. So, maybe the communities aren’t quite as fractured or as different; Ruby versus JavaScript as they think. If it’s like that in Ruby, that hey, we can all use Rails or use active record in Rails; and in JavaScript, you know, isn’t it the same thing? We got these groups that are doing different things.
CHUCK:
Yeah. I think you are right. I think mostly, there are different people out there doing different things. It just seems like when you get started though, you get sent down the same path as everybody else to kind of get to learn it. The other thing though is like when I started getting involved in the Ruby community and earnest, I started going to the conferences and I haven’t been really able to go to any JavaScript conferences yet. And so you know, that might change my view on the community a little bit just because I get to actually go and interact with JavaScript developers and really kind of get a feel for the kinds of things that they are talking about when you get a few hundred of them together.
JOE:
Right. I think that one of the things that’s apart from the JavaScript community is the fact that this moving from unsophisticated to sophisticated solutions. And so the community, it just reacts in a funny way to that; where in other languages, you kind of start off building such complicated solutions right from the get go. In JavaScript, they’ve been building all these sophisticated solutions for so long as like, “Oh, I just wanted to make the button flash.” Or, “I want scrolling texts.” And nowadays, we are trying to write and entire applications across the client and server in one language. And so the solutions are getting really sophisticated that as a community, people are reacting to that pressure in many different ways and bringing what they have in their former communities over and trying to figure out how to solve these problems.
CHUCK:
Yeah, I think that was what really kind of got me interested in JavaScript was that it was like, okay look, there are all of these interesting and amazing things that are moving forward and kind of advancing the art in JavaScript that before, it was just this you’d put a little script tag in with a couple of line that yeah, you put a click handler in there and that was about it, you know?
JOE:
Well, one of the things that I love and I think I love about the JavaScript community more than the other communities that I’ve been involved in… I was involved in the .NET community fairly heavily. I think the JavaScript community is just more exciting. And I think I’ve said this to many other people; I may not have said this in this show, but JavaScript is the most exciting language to be working. It’s the Wild West, this is the frontier, this is so many things are being pioneered right now in JavaScript.
JAMISON:
You mean the “wild, wild west.”
CHUCK:
[Chuckles]
JAMISON:
Then you start rapping.
CHUCK:
We are all in the wild, wild west right now, except for AJ who’s in the wild, wild Midwest.
JOE:
I heard somebody once say that computer and science and astronomy are the only two sciences anymore that an amateur can make a significant landscape changing contribution to.
CHUCK:
Ah, interesting.
JOE:
Yeah. I thought that was really cool, you know? Everybody listening to this podcast, everybody out there programming in JavaScript, you know, some of these people are going to accomplish stuff that is going to change the landscape of how we do stuff. And a guy in his garage can make a change; where in civil engineering, nobody in their garage is going to change how we do civil engineering or in finance, you know?
CHUCK:
Right.
JAMISON:
Maybe with 3D printers. I don’t know.
AJ:
Oh, that does sound very promising.
JAMISON:
So I was just playing the Mozilla demo, it’s called Bananabread instead of listening for a couple of minutes and its really amazing. You guys should check it out. Also, what Joe was saying about the community being exciting, I was talking with an iOS developer that we have here. And he’s a fantastic developer and he’s done a little bit of JavaScript. And he said that it’s so much more dynamic. Like iOS has this thing called, CocoaPods, which is basically like a proto package manager in a really primitive stage and it’s just barely getting started. And there’s not as much community involvement or community projects because people just kind of use what Apple gives them. So I agree with Joe that there’s tons of people just working on cool stuff and that’s why it’s so exciting.
CHUCK:
Yeah. I have to ask, Joe, you’ve been involved in the .NET community, is part of the reason why the communities are, is because it is kind of a corporate-centered or a corporate-driven product with .NET and Visual Studio? Does that change the landscape a lot or is it really the developers that are part of the community?
JOE:
I really do think that the Microsoft community is dominated by the Microsoft-centric few. And people that are really active in the Microsoft community are definitely a little bit more forward thinking but the community at large, I think suffers from, “Microsoft solves this, I don’t need to worry about solving it myself.”
CHUCK:
Right.
JOE:
And that it suffers so heavily–
JAMISON:
Or “Microsoft didn’t solve this; it must not need to be solved.”
JOE:
[Laughs] I’ve definitely seen less of that, but certainly, there’s got to be some of that too. But as a great example as I’ve many, many times said, TFS is a whole suite. It does four different things; it does them all just okay. And so everybody is like, well, Microsoft produces products. Let’s just use that rather than let’s use that different source control, like let’s use Git instead of TFS. And let’s use a different CI system and you know, pick the best of all; were all picking just the one that’s okay and we’re not solving… so it’s hard to tie things together. Nobody is out there, “Hey, I solved the…” using Git on Windows long ago, which they have solved that. People finally have solved that using Git well. But using Git with TFS is still painful.
They don’t solve these problems because they feel like Microsoft solves this for us. So I don’t think that the community by large is thinking for themselves as far as, “I’m going to go out and solve some problem that exists and I’m going to make it open source when I publish it.” And that whole open sourced mindset, I really laud Microsoft recently for going far more open source. You know, they created this sub corporation that’s doing just open source and their whole charter is to make Microsoft products integrate well with open source products.
I think it’s a great, great thing for them to do not just for their profit margins, but also for the community as a whole, because Microsoft does make good products. They do. They also make crappy products and so, community members in the Microsoft community aren’t thinking, “I’m not happy with this. I’m going to go and solve it my own.” And in the JavaScript community, “Man, it’s fantastic like that. I like this way that these guys solved it, but it didn’t do it well enough. I’m going to do it better.”
JAMISON:
It’s also kind of a curse too. I mean there are like 30 bajillion different testing frameworks out right now and none of them have won.
CHUCK:
Yeah.
JAMISON:
So you do get a lot of duplication of effort.
CHUCK:
Yeah, but at the same time, I mean, just to give you an example; from the Ruby community, I mean we have test unit and then we have Rspec. And somebody else came out and wrote Minitest, which was kind of a newer, faster, cooler version of test unit. And you know, they basically have built shims over the top of it so you can make your Minitest stuff look like Rspec. And some of the areas that Rspec has innovated in have trickled over into the other testing libraries.
So having that wide breadth isn’t necessarily a problem. I mean, sometimes it would be nice if you could get more of a concerted effort on something that really just rocked but at the same time, all these different people are innovating in their own way. And you know, finding different things that just really kick butt are awesome. And then the other testing frameworks will pick them up and use them and run with them. And then you wind up with something that’s a little bit better that may not have happened if all five or six guys that were working on separate things went off and did their own thing.
One other thing I wanna point out with what Joe was saying where people go out and kind of solve their own problem is that you really do get that… oh, I just lost my train of thought. It’s really exciting though, it seems like it happens in the newer communities where the things aren’t well established necessarily. And as much as we talk about JavaScript being an old and established community that’s been around for 20 years, at the same time, I mean the landscape of what we are dealing with in JavaScript has changed a lot. And in a lot of ways, it’s more like a new community than an old one; especially with the NodeJS and the way that it’s come up. You know, the stuff that you can do with it and the fact that it runs on the server brought people in from other communities. And it’s not the 20 year old JavaScript community; it’s the new were working on something cool that runs on the server JavaScript community. And so they are innovating in a lot of ways — and moving very quickly with it which is really exciting.
JOE:
Yeah that’s for sure.
JAMISON:
Yeah. I think you hit it on the head. AJ, said that it’s a community of amateurs a lot and I think that also kind of sums it up well that even though it’s been around for a long time, there’s lots of fresh stuff happening. I don’t know.
CHUCK:
Right. Well, the thing is you know, that the JavaScript community with things like BackboneJS and EmberJS and all of these different MVC frameworks, that kind of take advantage of some of the things that jQuery has given us, I mean, it’s a new world out there for JavaScript. And as many people are as out there writing the little script tags with 4 or 5 lines in it like they did in the 90s to animate something or move something or put a click handler in there, you know, nowadays, we are seeing a community of people who are writing whole applications in JavaScript. And we said this before, but those kind of things make it sort of a new community; and so they are solving new problems and moving quickly into new areas. And so, I kind of see where people are saying that the language has been around for 20 years, but at the same time, it doesn’t feel that way all the time.
AJ:
Yeah. Because it’s not until jQuery came around that I think people really started to become invested in the language, you know? That’s where it started the transition from a community or amateurs; people that were not willing to actually learn and to invest in JavaScript starting to get some people that wanted to design things in JavaScript rather than just throw some crap together.
CHUCK:
Right.
AJ:
And Node has definitely taken that a huge step further because it brought in some smart people. People from Ruby had been invested in the language, you know?
JAMISON:
There were already smart people still, though.
AJ:
Well, yeah. It brought in a lot of them. Like jQuery didn’t bring in like a lot of new smart people from other languages or other background. Node brought in people that primarily worked in C. They primarily worked in virtual machines, they primarily worked in Ruby, you know? Like NPM is the result of looking at all the faults that gem has had to go through as its evolved and then solving all of them from the get go and then solving a few new ones that were found out along the way.
JOE:
I’m not sure that I agree that if, say two years ago you are primarily working in C that that’s evidence that you’re really smart.
CHUCK:
[Chuckles]
AJ:
Right. I think the quality of people that have come in to JavaScript has… like JavaScript have benefited probably more by Node than by just as much as HTML5.
CHUCK:
Yeah. It would be interesting to see how many people have come in over the last ten or so years and really invested in JavaScript due to Node versus other technology that’s part of the JavaScript ecosystem.
AJ:
Well I guess we’ll see some flames in the comments with people like, “AJ, you’re an idiot!” blah, blah, blah, blah, blah and then we’ll know.
CHUCK:
Yeah. I think part of what really drew people to Node was just that it provided an innovative way of solving the same problems that we’ve been solving for a long time. Because most of the systems out there that you use on the server are primarily procedural systems. I mean, even if you’re looking into something like Rails, where you have the MVC and all that stuff going on, when it comes right down to it, it works through the system in a procedural manner. And this is more eventdriven and it’s really an interesting way of tackling some of these problems that don’t seem to fit well into the procedural area.
And so, I think what really happened was people saw it, they started experimenting with it to solve their problems and realized that it actually had a place in their ecosystem and infrastructure to build out what they needed to build. And so then people started investing in it because they wanted more power from it. They wanted to be able to do more things with it and solve the other problems that lend themselves well to it and so I think that’s how Node kind of grew into a first class citizen in the server space.
JOE:
I think Node is a funny cap because it just seems like such a mismatch. But I agree with you in some cases Chuck, but I’d say it’s possibly I would think the reason is a little bit different. But the reason that Node has benefited us so much is because Node bringing JavaScript at the server side, all of a sudden made a whole bunch of people that were really smart put their ears up and say, “Really? That sounds really cool!” And the people that go to… are interested in new, exciting technologies, I wouldn’t say they are smarter, than people that aren’t, but more community oriented.
CHUCK:
I was going to say they just have more time than I do.
JOE:
More time, yeah. They are more community oriented and interested in solving problems. Like “Hey, Node is doing something cool. I’m going to go check it out and that makes me interested.” I’m checking Node for a problem I have here in my company and I see Node has these other problems. So because I’m just that kind of person; I like solve this problem. So I brought in Node and now I’m going to solve some problems in Node and publish them. I think it’s just those kind of people that are drawn to something like Node that have really benefited the JavaScript community as a whole.
CHUCK:
Yeah. I Agree. And I think similar things have happened in the web space due to things like jQuery and stuff just kind of giving you a common denominator to work from.
JOE:
I was really excited about what JavaScript can do on the browser and that’s what converted me to JavaScript; not because in it of itself it seems like an amazing language or because what I was allowed to do on the browser. I think that it’s possible that a lot of people don’t see the browser as being that exciting. Like, they are not as excited about solving the user’s problems. But if they are excited about solving a corporate problem at their company, then Node can get you excited about that.
CHUCK:
Yeah, I agree and a lot of what you said is more or less what I was trying to say, so it’s just interesting and now that people are seeing it as part of their infrastructure they are willing to invest in it. And so, the JavaScript community has gone from a way of dealing with the deficiencies of HTML in one way or another to an actual fully blown part of the architecture of your system.
JOE:
Yeah.
JAMISON:
I have a question for you guys. Have you ever talked someone to program using JavaScript that didn’t already know how to program? Because as JavaScript is more and more popular, it seems like people are coming to their JavaScript as their first language more. I mean, it definitely has some quirks relative to other languages but I wonder, if you don’t know anything about programming, does that even matter? Maybe you like … just make sense to you because you don’t know any other way or something.
AJ:
Well, I would not recommend that someone go into JavaScript unguided as their first language Because of the “community of amateurs” thing. They’re going to find W3Schools and they’d be like, “Oh yeah, this has all the best tutorials.” You know? And things like that where they’re going to end up finding that the most popular solutions when they Google are going to be some of the worst implementations you can possibly decide on.
So I would recommend some other language that’s has had a more structured community like Golang or Rails or Python, where they do have some agreement on what path you should take and what is idiomatic in that language. Because in JavaScript, like what we’re saying earlier, people just can’t make up their minds on what is an idiomatic use on the language? And there’s a lot of conflicting opinions and worse, there’s a lot of amateur opinions that just bare no relevance.
JOE:
So I kind of agree with you, AJ, to a definitely a certain point, although for a related reason and that is I think that JavaScript lacks by large a cross community as a whole as engineering rigor that exists in other places because of that amateur view of the world that we have large community of amateurs. And so, coming to JavaScript first means that you are not going to see much of engineering discipline. Whereas if you go to one of the dodgier languages, like Java or .NET… and I don’t wanna lump Rails in that group, but Rails has a large engineering oriented community, then that’s good because that helps you be a better programmer and that doesn’t exist very much in the JavaScript world. So that’s a good reason not to start with JavaScript, but I think it’s still an awesome language to learn as long as you can learn engineering discipline when you are going along.
AJ:
Right. If you have a guide.
JOE:
If you have a guide.
CHUCK:
I think another thing that is interesting when you are talking about this is that, I think it’s important for people to learn object-oriented things. And I think it’s also important that they learn some of the other ways of tackling some of these different things like maybe go learn a functional language or something. And so, if you get into a highly OO language like Ruby and then go learn a functional language like Lisp or Scheme or Clojure or something, then you can see what the tradeoffs are and then you can kind of get a feel for prototypal/semi-functional/screwed up object-oriented nature of JavaScript. You know, you can see why it’s different, where it’s different and how to deal with it; how to compensate for some of the deficiencies that it has for certain problems, and why those are strengths for other problems and really get a feel for it.
But the fact that you have so many different ideas diluted into JavaScript, it makes it a really hard place to start. And so, for that reason, I mean, I would take somebody through some of these other languages so that they really understand object orientation, and they really understand functional programing and then they get into JavaScript. And they really kind of go, “Okay, well, these parts are kind of like where you get out of Lisp and these parts are kind of like what you get out of one of these OO languages like Java or Ruby.” And then you can go, “Okay. So now that I understand these other principles, then I can pick things apart and see why I wanna use this piece here and that piece there.”
AJ:
And to counter my previous argument, there are two things that I think are exceptionally good about JavaScript. One is that on every computer, you don’t need to install anything to begin using it; because you’ve always got Firefox or Chrome or Safari. You’ll hardly ever run into a computer that only has Internet Explorer. So you’ve got something that can run real JavaScript.
And then, if you are doing networking, like a chat server, there’s nothing better to start with than Node because it makes networking so dirt simple. It just takes out all the confusion and the select and the trying to understand how to manage the multiple connections. If you only get into something that’s networking, I think that NodeJS has got the best avenue of access. Because you’ll probably going to get across some good tutorials if that’s what you are coming in through. It’s just so simple. Whereas with Ruby, even building a chat server is a little bit more complicated.
CHUCK:
Yeah. I can see that especially where you have things like in Ruby for example, you have event machine, but it’s not as simple, it’s not as clean as doing it in NodeJS.
JAMISON:
Its abstraction built on top of a language whereas in Node, it’s in the language; it’s part of the what comes built in.
CHUCK:
Yeah. It looks like Joe has to take off. Do you wanna give us your picks real quick, Joe?
JOE:
Oh, yeah. Cool. My two picks for this week are Penny Arcade Expo, PAX, which is going on starting tomorrow. And if you’re hearing about it for the first time, it’s probably far too late to be there, but it’s just an awesome gaming expo with consoles and PC and computer gaming and tabletop gaming and everything put on by the Penny Arcade guys. And then my other pick is Wil Wheaton who I follow on Twitter. And he just does cool stuff; talks about lots of cool stuff. His tabletop YouTube series is really fun. And those are my two picks.
CHUCK:
Awesome.
JAMISON:
I don’t know who Wil Wheaton is, but he seems like some kind of like nerd god.
JOE:
So sad.
CHUCK:
You don’t know who Wil Wheaton is? He’s too young. He must be too young. Star Trek: The Next Generation.
JAMISON:
Oh, I see that little.
CHUCK:
Wesley Crusher, yeah.
JAMISON:
Yeah, Okay.
JOE:
That’s so sad, Jamison.
AJ:
I don’t know who he is.
JAMISON:
But I mean, everyone else on Star Trek isn’t worshipped by nerds all around the world. Why is he worshipped?
CHUCK:
I don’t know. LeVar Burton has a pretty good following.
JAMISON:
oh, that’s true. But he also has Reading Rainbow going for him, right?
CHUCK:
[Chuckles]
AJ:
Who is the Asian guy that also appears onsite at the Comic Con?
CHUCK:
I’m trying to remember. He plays Hikaru Sulu, right? In the original series.
AJ:
I don’t know.
CHUCK:
George Takei. Yeah, he is. He’s really cool.
JOE:
His Pinterest is hilarious.
CHUCK:
Yeah. He’s definitely one of those interesting people to follow. But yeah, so I don’t know. I kind of off and on liked Wil Wheaton. So yeah, it just depends. But anyway, well, thanks for coming, Joe.
We’ll talk to you next week.
JOE:
Okay. Thanks.
CHUCK:
So anyway, what were we talking about before?
JAMISON:
We were talking about learning JavaScript and whether you should or should do it as first language or how to help people out with it.
CHUCK:
Oh, yeah.
JAMISON:
One thing that’s really awesome is the Khan Academy computer science stuff. That’s all in JavaScript and it’s all really interactive. So if you guys have watched that…
CHUCK:
Khan Academy?
JAMISON:
Do you not know what Khan Academy is?
CHUCK:
No.
JAMISON:
Oh, now I get to make fun of you for not knowing what something is. It’s this online… it’s not as structured as like Coursera or Udacity or these university ones, but it’s just a bunch of online video tutorials for learning math or science or something.
CHUCK:
Oh, Okay.
JAMISON:
And the guy who started, Sal Khan, he’s pretty famous and has taken a lot of money from Bill Gate’s charity foundation, I think to get it up and running. He has a Computer Science section that the code is JavaScript and then there’s like a canvas on other site and you can hover over variables and click and drag them to shrink and grow the little drawings that you are doing on the side. It’s kind of like that inventing on principle talk things out last year that kind of made the rounds. I mean, this is all JavaScript, right? But it’s done in a way that it makes it really immediate the feedback on what you are doing if you can see it right away. But I think there are definitely environments like this in other languages, but that’s one good thing about learning JavaScript is that you can do really visual things and get more feedback that can maybe excite people more.
CHUCK:
Okay.
JAMISON:
So I’ll post a link to this so you guys should all check it out if you haven’t seen it yet.
CHUCK:
I was hoping that Khan Academy was related to Star Trek too.
JAMISON:
[Chuckles] Well, maybe it’s like the six degrees of Star Trek or something.
CHUCK:
[Chuckles]
JAMISON:
Everything is related to Star Trek if you follow some chain.
CHUCK:
There you go. All right. Well, so one thing that kind of came out while we are talking that I wanted to ask about then was, if you are getting into JavaScript, and you want kind of that first project to kind of get going in it, is the chat server kind of a good first step or is there something simpler maybe that you can try out or what?
JAMISON:
I think it depends on your background. If you know just zero about programming, then no. And if you know nothing at all about server-side stuff or networking at all, it might be a little tough to just put it together on your own. There’s some tutorials. And it’s kind of like the to-do app version for Node that there’s just a bajillion tutorials for chat servers. So those might be good to follow along with.
AJ:
I think if you don’t use anonymous functions and you use functions… yeah, if you ever do anonymous functions and you are not too familiar with programming, I think the NodeJS chat server thing can be pretty simple. But most of the examples I’ve seen use anonymous functions and I think that’s a little bit confusing to follow when you are not even familiar with the concept of function yet.
CHUCK:
Right.
AJ:
But I don’t think nested functions as much harder to understand. To me, that seems very intuitive. It’s just if you logically nest something, then it’s going to get used where it’s nested. I don’t think that’s too difficult. And I do think that if you don’t know too much about networking, then the JavaScript NodeJS examples are easier to understand because it’s just like a coffee shop; I mean you can go through the coffee shop analogy, that little article and kind of explain it that way and then it makes a lot of sense.
JAMISON:
I don’t know what article you’re talking about.
AJ:
The “Coffee Shop Doesn’t Use Two-Phase Commits” article. I’m pretty sure I’ve…
JAMISON:
[inaudible] hopefully other people listening to this besides me and they might not know what you’re talking about.
AJ:
Yes. So if you Google, “Your Coffee Shop Doesn’t Use Two-Phase Commits”, then you come up with this PDF which is just a beautiful explanation of event-based design. And basically you’ll see an example if you walk in to Starbucks, you order your coffee, you sit down then you get an event callback when your coffee is ready; rather than you walk up to the register, you wait and wait and wait and wait and blocking fashion until your coffee is ready; then pay, then site down.
CHUCK:
I don’t drink coffee but I have been to coffee shops that function in both ways.
AJ:
Yeah.
CHUCK:
Anyway, yeah that makes sense. What about on the browser? Is there kind of a generally accepted first application that you ought to build on your browser? Or is it a to-do app? Or is that too complicated?
JAMISON:
That’s like an MVC learning how to use…
CHUCK:
Yeah, that’s kind of the way it struck me too.
JAMISON:
Are you talking about people that don’t know JavaScript or don’t know programming?
CHUCK:
JavaScript. Don’t know JavaScript. Because don’t know programming you start with kind of the same kinds of things; the hello worlds and the basic variable manipulation and stuff like that. If you are trying to learn JavaScript in earnest and say you are at least halfway decent in some other language?
JAMISON:
That is a good question. I don’t really have an answer to that. It seems like…
AJ:
Crockford…
JAMISON:
Yeah, he’s talking about a project, not a person…
AJ:
Oh, right.
JAMISON:
I don’t know. Maybe you could do some really basic just DOM manipulation stuff without jQuery.
CHUCK:
Right. Do something like a bingo game or something where you press a button and it brings up a number and then you click on the number to put a thing on it or something.
JAMISON:
Yeah, these events somehow or something where you have to select DOM elements
CHUCK:
Yeah.
AJ:
You know what’s really fun; reinvent a game like catch phrase or one of those personality tests, because then it’s something that you get to share with someone else and they kind of immediately get it. If you do something like catch phrase, then you have a really fun time because you get to implement things using the HTML5 like the i/o API for the buzzer and do a ticker. And so, something like the catch phrase is really, really cool to do in JavaScript. And it’s not complicated; you just have a word bank and then you press a button for team A and a button for team B and then a button to start/stop/pause the buzzer.
CHUCK:
Right. That makes sense. Huh, all right. Well, I think we’re just about out of time. I think it will be really interesting to talk about like the code exercises kind of things that we are talking about now where it’s what kind of apps do you build for practice or what kind of problems do you go out and find and solve. Do you do Conway’s Game of Life or something else? And kind of learn how to program or in some cases, learn how to learn how to program.
AJ:
Hey Jamison, did you do Conway’s Game of life?
JAMISON:
I did. I don’t think I ever got it hooked up to canvass though. I mean the game itself was like 5 lines of if else statement and that’s pretty much it.
AJ:
Oh, wow.
JAMISON:
I mean, it’s just literally, “if these squares have these designs, then do this,” kind of thing. So, it’s not very hard. But I don’t know, maybe I should put it on some canvass but I kind of abandoned that.
That was the first thing I ever did in CoffeeScript though.
CHUCK:
Cool. Well let’s wrap this up and get some picks out. AJ, do you wanna start us off?
AJ:
Yeah. I’ll do that. First off, I have a pro tip for you: if you are ever eating a banana, eat it like a monkey. Instead of trying to peel it from the top, if you just pinch the bottom, it’ll just slip open. So when you get one of those bananas that’s a little bit too green on the top and you are like yanking at it, yanking at it, all you are really doing is like mushing the banana. Instead, if you just take the bottom and pinch it, it will split right open.
JAMISON:
[Chuckles] Okay, I’m five years old; I laughed when you said, “pinch the bottom.”
CHUCK:
[Chuckles]
AJ:
Well, that’s Okay. You can do that.
CHUCK:
I was thinking about when you said, “eat it like a monkey,” I’m like, “hold it with my foot?”
AJ:
You did eventually do that if you have opposable thumb on your foot, yeah.
CHUCK:
I’m going to get surgically altered, so I can do that then.
AJ:
That’s what they did in that one movie. I don’t remember the name… Aeon Flux; yeah. It’s like a wannabe Matrix. It wasn’t really all that great.
CHUCK:
It wasn’t great, yeah.
AJ:
And then my other pick is a local pawn shop. It’s called, Minuteman Pawn and it’s in Orem on State St. at about 900 South. And if you want any audio equipment, there’s a guy named Alan there; with ay cool guy. Does a lot of stuff. I do a little DJing on the side so I’ve gone there to buy stuff from him and I go there a lot just to bs and kind of keep the friendship going or what not. And then it’s totally transformed since this new company bought it and rebranded it like a year ago. And I just got a MacBook Pro from there as well and I paid $1,068.50 for it. And I’m pretty excited about that.
CHUCK:
Nice.
JAMISON:
Should I have it go down by 50 cents?
AJ:
I had them go down by $500.
JAMISON:
$500 is kind of 50 cents.
CHUCK:
I know Jamison. You totally got taken.
JAMISON:
[Chuckles]
CHUCK:
All right. Jamison, your picks.
JAMISON:
My first one is Counterstrike Global Offensive. It’s a version of this really old first person shooter game called Counterstrike which came out in 1999. And Valve just released a new version that’s pretty similar, but it’s just like the purest, most… I don’t know, it doesn’t have any gimmicks, which you have to unlock stuff — it’s just all about the game play. And it’s really well made and it’s pretty cheap; i think it’s only $15. I’ve been spending a lot of time with playing it a lot at work and I’ve had a great time. I think that’s my only pick. I didn’t really run across too much other stuff this week. I started doing some freelancing, so I don’t have too much time anymore. Yeah, so that’s it.
CHUCK:
Awesome. So I guess it’s my turn for picks. I’ve been so busy lately; I just haven’t even had the time to think about it.
JAMISON:
You can pick AJ and I.
CHUCK:
Yeah. There we go. My favorite co-hosts.
JAMISON:
Woohoo! Yeah, screw that Joe guy, now that he left.
CHUCK:
Yeah.
JAMISON:
We can talk about him behind his back.
CHUCK:
So have I talked about Omni Focus yet?
JAMISON:
I think so.
CHUCK:
Okay. Let’s see… what am I using these days. I could talk about what I used to back up my computer because I’m really happy with it. One of them is Time Machine and the cool thing about Time Machine is its built in to the Mac you don’t actually have to do anything. I have an external drive siting behind my computer that I ordered off of Amazon. I don’t remember what brand it is. I don’t think it really makes a huge difference. But yeah, it’s just backs up my computer every day and I probably have about 30 days’ worth of backups on it. And so if I ever have to roll something back, I can — which is really what it’s there for. And then I have an offsite backup with Mozy. Now I have to put a disclaimer out there; I actually used to work for Mozy. This was back when the company had a soul.
AJ:
Ouch.
CHUCK:
[Chuckles] But anyway, I like the service, I know how it works and I’m pretty confident in the fact that it can deliver for me. So, that’s what I used to back up my work machine. And yeah, then if the machine gets stolen or my house burns down something I can just get another machine and it will restore everything off of Mozy. So I think that’s kind of the best approach for most people is to kind of have a two-tiered system at least two tiers; where one is a local backup and the other is a remote backup. I also use Dropbox and stuff to kind of store some of the stuff that I need to share between computers. And so you can think of that as kind of a backup, but it’s not the same thing.
JAMISON:
Have you picked up the Amazon Glacier thing that just came out a couple of weeks ago?
CHUCK:
No.
JAMISON:
Where it’s really key for storing tons of data, but if you want to get more, there’s some limit to how much you can get out a month; it’s like a few gigabytes a month. So it’s basically just for really long term for backups of tons and tons of data. So, if you have like a terabyte of photos or something, you can just put them on Glacier and it will be $20/year or something like that.
CHUCK:
Huh, I’ll have to look at that.
JAMISON:
But then if you need to download them all, you do it all like as fast as possible, it’s super expensive, so you kind of have to limit how fast you retrieve data from it
CHUCK:
Right. That’s interesting. I’ll have to check that out. Anyways, so those are my picks. I don’t know that we have many announcements, so.
AJ:
I did wanna pick one other thing.
CHUCK:
Okay.
AJ:
Because you are talking about backup. Western Digital just released recently a 2 Terabyte, 2 ½ inch drive. And that’s pretty amazing because that’s pretty much a little bit beyond the theoretical limit of what people believed you can fit on a 2 ½ inch magnetic media. And Seagate is supposed to be coming out of something that’s … and magnet based that’s going to be able to exceed 2 terabytes but 2 terabytes is kind of like you can’t get any bigger on 2 ½. So you probably won’t see anything bigger than that for a couple of years — until Seagate gets their stuff figured out and that might take a decade.
CHUCK:
CDN initiated the 2 ½ inch are the ones that goes into the laptop.
AJ:
Yeah and the ones that are like the past… like the ones you can get in Wal-Mart; the “carry with you backup device” or whatever. Also, Western Digital drives, they fail, just like any other drive. Rotational media sucks. But Western Digital has the easiest, simplest, pain-free way of getting your warranty returned; you just type in a serial number online, you click “send me a new drive,” you back up your old drive and do whatever and then you send in your old drive. If you don’t send in your old drive, then you get charged like a butt load of money because they’ll charge you above retail price for their drive. But you have 30 days to send back your old drive.
CHUCK:
Nice.
AJ:
And I think you have 120 days to send it in actually, but then they charge you like a $20 restocking fee, or like you send it too late fee kind of thing. But I just love Western Digital because I buy a lot of their drives and whenever they fail, I send them in and they give me a new one. And they don’t hassle me; I don’t have to run like disc diagnostics and have to like booth into Windows and all that stuff. They trust me. If I say the hard drive has failed and it has bad sectors, I check the box “bad sectors” and click send me a new one, they do it.
CHUCK:
Nice. Awesome. All right. Let’s wrap this show up; thank our listeners for listening and we’ll catch you all next week!
AJ:
Adios!
JAMISON:
See ya!