JavaScript Jabber

JavaScript Jabber is a weekly discussion about JavaScript, front-end development, community, careers, and frameworks.

Subscribe

Get episodes automatically

007

007 JSJ Online Resources for Javascript Developers


Panel

Discussion

Picks

This episode is sponsored by

comments powered by Disqus

TRANSCRIPT

AJ: Yo, yo, yo, this is Vanilla Cream with the remix! JAMISON: [Laughs] That’s how we got to start up the podcast! AJ: In the song, they are like in the chorus and then I just throw the volume up, THE REMIX! [Laughter] JAMISON: Yo, yo, yo, this is JavaScript Jabber Remiiiiix! CHUCK: Hey everybody and welcome to Episode 7 of the JavaScript Jabber podcast. This week, we are a little short; our panel is just three of us, but we are going to see how far we get and what you all think of this. So today’s panel is made up of AJ O’Neal. AJ: Howdy. CHUCK: And Jamison Dance. JAMISON: Hello! CHUCK: And I’m Charles Max Wood from teachmetocode.com. And this week we were… well, this kind of started awhile back. AJ started making a loud and unfavorable noises about w3schools (not to mention any names), and you know, just some of the poor practices that they propagate on their website. And so, we kind of thought it would be interesting to go into what some of these resources are that we use and why we like them or don’t like them. And maybe pull out some examples of why the documentation is or isn’t very good. We are probably going to name specific sites in here, sso that you can kind of get an idea of what resources are there. And then we’ll kind of move along from there. So AJ, I’m a little curious about… you pointed out a few things about W3Schools, but what particular bothers you about them? AJ: There’s just very naïve examples on there. I think that one of the things about JavaScript and reasons that it was designed the way it was is so that people with very little discipline can get in and do things, but I don’t think that if you are professional that you should be teaching other people the undisciplined way. And so, the W3Schools just their examples are the naïve way; the way that’s going to get you into trouble a lot of times, rather than the way that I would teach someone or that somebody who’s got a little bit more under their belt would introduce someone too, I think. CHUCK: Right. So is there a particular example that you can give? I mean, some of the things that they do that are a little bit naïve and are a little bit sloppy? AJ: Using HTML tags to attach handlers to something. So like having an audio tag with an on load in the HTML, rather than in the JavaScript. CHUCK: I’m not sure I follow. AJ: So like say— [Crosstalk] JAMISON: It’s using the on load elements of an HTML tag, right? Is that what you are talking about? AJ: Yeah. So you get on load and pass it a string which is the name of the function that’s somewhere in your JavaScript application. JAMISON: Or even better, an actual anonymous function. AJ: Yeah and so, if you have a real JavaScript application that doesn’t work anyway because you would have to have the function in the global scope for that to work at all. Do you know what I’m talking about? Have you seen it before where people put like the HTML tag button and then onClick = and then they give it some JavaScript functioning? Like that kind of thing. You shouldn’t be doing that. You should create a button, give it some sort of CSS selector and then you should select the button, and add the event handler to it. So, if I were going to show somebody how to do that, that’s the way I would do it. CHUCK: So you are talking about like unobtrusive JavaScript? AJ: Yeah exactly. And also doing eval type things; so there’s lots of places in their examples where they’re just putting quotes around the function and then passing it in to something that will eval it, like set timeout will eval your code, but for very little extra effort and a lot more readability and portability, you can just create a function and then pass in the function pointer to set timeout. CHUCK: Right. So if you pass in a function pointer, it works just as well as passing in the string with the function call in it? AJ: Well in theory, it should work better because if you are passing in a string, it has to eval it when it comes time to do something with it. CHUCK: Okay. So the one question I have then is on set timeout, if you want to say, make a call with specific parameters, how do you do that if you are passing a function pointer? AJ: So there’s two ways to do it; if you need to preserve —, then you create a function, do this and then you put your other function call inside of it with whatever scope it has and its closure. So I might create a function called create do this later and I might pass in some arguments and then have a function inside of that. But since those arguments are in a closure, it would return the new function. Does that make sense? CHUCK: Right. AJ: But in cases where you don’t need to preserve — or you don’t have something really special, where you need to use the closure, you can do set timeout function, milliseconds, arg1 arg2 arg3 and so on. CHUCK: All right. Okay sounds good. So one thing I used with W3Schools that is kind of handy is that they have kind of a little sandbox area where you can try out whatever functionality you are using. Are there other sites that provide that that you can kind of try out whatever function you’re trying to learn about? JAMISON: So we talked before about JSFiddle; that’s one way. It’s just a sandbox that doesn’t have anything in it so you’d have to type it in. But there’s also just the console in whatever browser you are in. I think that’s how I try that stuff out when I’m like on MDN looking stuff up and things like that. But, I don’t know of any really good sites that have great documentation that also have embedded example. CHUCK: Right. AJ: Yeah, mostly I use the console and I just copy and paste the code that’s in the blog into a console. Or the other things like JSFiddle and what not; I haven’t used those as much. Normally I’m just using the console. JAMISON: That could actually… I mean maybe that’s a need in the community, right? Better documentation that also has embedded runnable examples. I talked about last week about…  I can’t remember the name of it… this tool that lets you embed runnable code in your website. I have to look it up so I can say it, but maybe that’s something that somebody should make. CHUCK: Yeah that makes sense. JAMISON: So I just wanted to talk about this issue a little bit in like a larger context. So JavaScript has been around for a while and at first it wasn’t really a serious language, and that’s definitely reflected when you Google stuff on JavaScript. There are tons of horrible examples. And there are lots of amazing people where working on it now, but for a while, it wasn’t understood well, like people that used it and it wasn’t taught well because the people that were teaching it didn’t really understand it. So how do you guys separate kind of the wheat from the chaff? How do you tell when you just Google something, you are like, “Okay this is horrible, I shouldn’t do what it says,” or “This looks really good.” CHUCK: It’s whatever comes up first in Twitter right? JAMISON: [Laughs] CHUCK: In Twitter… [chuckles] in Google, right? AJ: I think your Twitter answer is maybe a little better. [Chuckles] CHUCK: Yeah. JAMISON: The first in Google is W3Schools, and we already said that’s the devil. CHUCK: Yeah we already dogged on them plenty, right? AJ: Usually, when I see that somebody’s doing very naïve things in their examples, I will try to find a better example. So, if I see some of like the hallmark bad code things like evaling strings in various ways where they are allowed to be evaled, I typically try to find somewhere where somebody is using a more modern design pattern. CHUCK: Like a function reference? AJ: Yeah. CHUCK: So, one thing that I want to jump on there is the fact that you know, you are pointing out these evals and it’s a little bit… what’s the word I’m looking for… it’s kind of a hidden deal because you don’t see it explicitly calling eval on what  you are passing. AJ: So it’s not about eval; the point is that it’s going to have to reference a global… one is it’s a very naive way to do it. It doesn’t make any sense. Why would you put a string and call something to do A, B, C when you could put the function something to do and then put the parameters A, B and C? CHUCK: Right. AJ: It just looks funny. It’s confusing, like what scope are A, B and C going to be in when they are encapsulated in a string, you know? And I think a lot of times it ends up being that they are going to have to be in the global scope. And so you are passing in a string, it’s getting some sort of global context. I’m not really sure what the context is when you pass in a string, because I don’t ever do it, so I haven’t run into those problems. It would be interesting I guess to try it just to see what happens if you have a variable in the global scope versus in a local scope when you pass in a string to a function like that. CHUCK: Uh-huh. Right. AJ: Again it’s ambiguous, right? So I don’t know what’s going to happen. It’s not intuitively obvious. So I don’t like it. CHUCK: Right. So I was going to point out… and that’s why I misspoke and said “Twitter” instead of “Google” is that, you know, most of the examples that I go and look at that I’m comfortable with usually have more to do with social proof than anything else. I mean, you know, I’m still relatively new to JavaScript. I mean I’ve been using it for years but I haven’t actually been understanding it for years. And so generally, you know, if it’s somebody that I respect and feel like they’ve kind of vetted things for me, then I’ll go check it out. So for example, if something is recommended in JavaScript Weekly, I know Peter well enough to know that he’s typically gone out of his way to read the article, make sure that it’s got good stuff in it, make sure that it’s relevant and make sure that the examples are clear and follow some best practices. And so you know, something like that is something that I will trust a little bit more than whatever Google juice brings up because Google juice really it just boils down to– JAMISON: Google juice is for sale man! CHUCK: Yes. In a lot of ways, it is. But you know, ultimately, it usually goes off of things like how many times the keyword shows up — which is good — you know, for most things and how many times its been linked to, but it doesn’t matter if those links are ten years old or a year old. It seems like, you know, it still has this huge amount of people linking to it and so, it kind of moves up in the list. AJ: Yeah definitely. JAMISON: I was just going to say I’m glad you mentioned JavaScript Weekly because that’s great. I haven’t subscribed for very long, but it’s been really fun to read; some cool stuff on there, so everybody should check it out if you are not familiar with it. It’s a weekly newsletter that Peter Cooper puts out; just cool stuff in JavaScript. CHUCK: Yeah. One other thing that I do is if it’s on the official website for whatever library, for example, I’ve been using Backbone, so I like getting my examples off of the Backbone website or if I’m using jQuery, getting it off from the jQuery website. You know, typically they are going to put examples in there that show you how they have thought about how the library should be used and so that will give you good idea. They don’t always follow the best practices, but they typically do a decent job of putting that together. AJ: Mh-hm. Yeah, I love and hate jQuery at the same time. I love it because they’ve defined a consistent API that makes sets and whenever I use Ender right now instead of jQuery for DOM manipulation and they basically have the same thing as jQuery has except they’ve broken it down into modules. JAMISON: And they have no documentation. AJ: Right. And they have no documentation. However, it follows the jQuery API exactly. So whenever I need to lookup how to do something in Ender, I actually go to the jQuery documentation. And I think it’s that way with a lot of libraries that are popping up, that are maybe from more modern browsers that jQuery is. Everybody is pretty much following that API. It makes sense, it’s great. The only thing I really don’t like about jQuery is that it just swallows errors so badly and it’s so difficult to find a bug in your code because it will either not give you an error at all or when it throws the error, it will have been like caught and passed on to something else and thrown; and so you get this call stack that doesn’t help you figure out where you actual had a problem. CHUCK: Yeah. I run into that a few times where it’s says that there was an error. I look up the call stack and it end somewhere in jQuery instead of ending where my code did something bad. But yeah, so what other resources do you guys use then? I mean you guys mentioned MDN, that’s the Microsoft Developer’s Network, right? JAMISON: Mozilla. CHUCK: Mozilla. JAMISON: [Chuckles] CHUCK: I’m giving too much credit to the wrong company. We are all Microsoft fans right? Especially as front-end developers. JAMISON: [Laughs] Yeah they’ve done such great things for the web. AJ: Actually, they have. JAMISON: Well, yeah I mean they like started AJAX. AJ: They started AJAX AND the drag and drop API. Although that one has some definite quirks; if you Google it, you will see immediate rants about. But I think there’s some work arounds. CHUCK: Right. JAMISON: I mean MDN is the main one that I use whenever I have questions on some method or something that I can’t remember, I just type MDN like array or whatever it is and it’s never let me down. CHUCK: All right. So, what do you like about MDN? JAMISON: it’s very clear. And they have simple examples that are easy to understand, but still demonstrates stuff. And also, one thing that bugs me about W3Schools is they are trying to like piggyback off the W3C, right? Just that name makes it sound like it’s really official and they have ads on there that’s just kind of seem spammy and MDN isn’t spammy at all. It’s just straight up documentation for JavaScript. AJ: And it’s kind of the official documentation more or less because Google references it. I mean Google has their own HTML5Rocks, and that’s kind of their documentation – the live examples; but they don’t have like the specific JavaScript implementation for Chrome. In a lot of their tutorials, they just point you back to the Mozilla developer network. And so, the other nice thing there is those are the people that are actually building the browser, so they know what the quirks are, and they can tell you in the notes like, “By the way, if you set the timeout to zero, it will wait at least 4 milliseconds, so don’t set timeout on something to make it asynchronous if you got a list of 10,000 items because it’s going to take a while.” CHUCK: [Laughs] Like 4,000 milliseconds? AJ: That will be 40,000– CHUCK: Or 10,000. That’s true, yeah. AJ: Yeah there’s a minimum delay of milliseconds for set timeout for efficiency reasons and what not. So, it’s cool because they have all those little “gotchas” listed right there. CHUCK: Yeah that makes sense. So, that’s one other thing that I have a question about then is you got the JavaScript engine for Mozilla and their browsers and some of the other ones like Chrome or Safari or what have you — they use different JavaScript engines, right? AJ: Yeah. CHUCK: So with the documentation then not be valid for the other implementations — at least with these little quirks anyway? AJ: On MDN it actually will tell you whether or not it’s supported in Safari or Chrome or Internet Explorer and if there’s any variation between the two versions or the three versions or whatever. CHUCK: So are there any other documentation areas out there that you can use to get information on JavaScript? AJ: I would say Quirksmode is one of THE best and most famous. CHUCK: Okay. Is that quirksmode.com? AJ: Let me see what it is. I’m so lazy, I was just always typing quirksmode. So actually, normally I just Google for what I’m looking for and quirksmode comes up. Yeah it is quirksmode.org. CHUCK: And what’s different about them from the MDN? AJ: So this guy goes by PPK… Peter-Paul… I don’t know how to say that last name, “Koch” probably? He has been doing browser stuff for a very long time and he basically has these tables and these very in detail blog about every different about one browser and another for any given particular feature; so like, mouse over events. Basically, his documentation is analogous to what the people who wrote jQuery would have been reading to create jQuery. His sit documents all the inconsistencies and then libraries like jQuery wrap over those inconsistencies and provide you an API that works every time. CHUCK: Right. Which is actually really, really nice when you are doing things like that. AJ: Doing something without a library like jQuery is madness. I think it’s just foolish. CHUCK: Right. JAMISON: So another good one is Can I Use This or sorry, caniuse.com. It has charts for CSS3 and SVG and all kinds of different things, but there’s also a good one for JavaScript. And it doesn’t go into as much detail about the differences in how you actually use these features in different browsers, but it just does a really quick overview of support for different — mostly newer features – in different browsers. It will tell you what version it started to be supported and all to different browsers. I’ve used that one before too. CHUCK: Right. Cool. So, another question I have is, you know, what we’ve kind of talked about with documentation that’s out there and available for people to use. What do you guys use or watch or listen to or whatever to keep up on what’s going on out in the wider JavaScript world? I mean, do you follow specific blogs? Do you listen to certain podcasts? AJ: A lot of times for me, it’s just about bumping into a feature. CHUCK: Okay. AJ: And realizing that it’s something that I want to do and then figuring out how to do it. HTML5Rocks is really like the latest stuff, like the file API and that kind of thing when they post new articles. It’s a good place to be. CHUCK: Yeah. Isn’t that one run by Paul Irish? JAMISON: Yeah. AJ: It’s the official Google one even though– [overlapping talk] JAMISON: There’s a few people on there I think but he’s one of them. CHUCK: Yup. So a few that I listen to; there’s the JavaScript Show that has Peter Cooper and Jason Seifer on it. And some of the stuff I’m interested in some of the stuff I’m not; the same thing with JavaScript Weekly. Is there a website out there… I am assuming there’s a JavaScript Reddit? JAMISON: I’ve actually never been to it. That’s a good point. I haven’t even thought of that. AJ: I’m still being pulled in to some of these social medias one by one. JAMISON: [Laughs] AJ: I’ve seen Reddit before, but I’ve never really done anything with it because all I see is like a list of things with up and down arrows and I’m like, “I don’t know what this means.” JAMISON: You mean a list of cats with up and down arrows? CHUCK: [Laughs] Yeah Reddit is pretty widely used in the Ruby community, it’s a good place to get noticed. And the stuff that gets voted up is actually really kind of cool. It looks like there quite a variation of stuff on Reddit that might be interesting to pull in. AJ: There is a good one that I know of that I’ve found some really cool stuff on from time to time; it’s on Twitter there’s like a GitHubJS or something. I think they got one for lots of different languages. I don’t think it’s done by GitHub but there’s some sort of like robot that basically probes the GitHubs and checks to see like what new projects are being started or activity or something. I don’t know what the heuristics is, but it tweets out projects on a pretty regular basis. Let me see if I can find that real quick. It is called GitHub_JS. It’s got the GitHub logo there so I’m not sure if that’s actually them or not. CHUCK: I don’t know. AJ: There’s grapevineproject.info. CHUCK: Yeah there’s also JavaScript Daily I think it is on Twitter and I think that’s also run by Peter. JAMISON: There are few people that you can follow on Twitter if you are interested in the actual like JavaScript language itself like ECMAscript and stuff. Brendan Eich is actually pretty active on Twitter. He talks a lot about Mozilla stuff but he also talks a lot about like the language spec and things that they are working on in the committee. So he is a good guy to follow. And actually Yehuda Katz, I mean if you don’t follow him already, you totally should. He spends a lot of time talking with Brendan Eich about just new features in JavaScript and the spec and stuff. Another good one is David Herrmann; his Twitter is @littlecalculist and he also works at Mozilla — in programming language research and he’s got lots of interesting stuff to say about JavaScript too. So those are some people I follow for like the cutting edge in the language, not necessarily in like browser APIs or things. AJ: And then also, the YUI blog is really great. Yahoo has gained a lot of respect in my opinion from their participation in the community, specially surrounding JavaScript, both Dav Glass and Douglas Crockford of Yahoo put out a lot of really good material. And if you are not watching the Crockford videos and checking back occasionally to see what else is up, you definitely got to do that because that is really… watching those videos was the point I turned from being a novice who could click buttons on jQuery to actually beginning to understand the language and be able to understand design patterns that can be employed in JavaScript. CHUCK: Right. JAMISON: So I have a tiny rant about Douglas Crockford; he is awesome and I’m so glad he exists because he’s made JavaScript much better and he is wonderful for kind of bootstrapping your JavaScript knowledge and getting some good practices that if you follow, you won’t be hurt in most cases, but I think lots of people kind of rely on him as a crutch because he has a lot of really strong opinions, right? Like there are some things that he says are true and there are some things that he says he thinks are true. So I think there’s a price to everything, right? When you read or watch his stuff, you owe it to yourself to understand why he is saying what he is saying and that way, you can make a decision on whether or not it actually applies to you, right? Because I think if you can separate the fact from the opinion, you can take the fact from what he is saying and use it in your code and then maybe you will have different opinion so you’ll do different things. So listen to what he says — don’t blindly follow it. I think that’s the summary. AJ: Listen to what he says and if you don’t have a specific reason not to follow it — follow it. CHUCK: [Laughs] JAMISON: Well, yeah but understand why he is saying it too. Don’t just be a “Crockford zombie” like I have been in the past. CHUCK: [Laughs] AJ: I’m not a zombie. I’m really making a choice. I mean there are good things— [Crosstalk] JAMISON: No, I’m not saying you are, but I think you agree with him – it’s not that you just listened to him, like you agree with what he says, so you do it. It’s not just like, “Crockford says it, so I will do it.” And I think there’s a difference between just doing it because he says it and doing it because he made you think about it and you agree with his reasons. AJ: Yeah but I definitely feel like his influence in the community has been an excellent one. Other than that, he is super opinionated and sometimes his comments are… well, you got to take them with good humor. [Laughs] JAMISON: I wonder if he does it on purpose sometimes too. CHUCK: Yeah, every community has one somebody that everyone’s like, “He is a genius but he’s kind of obnoxious.” JAMISON: [Laughs] I think programming languages have those people more than other communities. CHUCK: Yeah. JAMISON: Just in the nature— CHUCK: Yeah but send your hate mail to Jamison. JAMISON: Yes. [Laughs] Maybe I’ll be the kids that like, “He is an idiot and he’s obnoxious!” CHUCK: Oh, there you go. JAMISON: That will be my role in the community. CHUCK: [Laughs] AJ: Actually, that reminds me… there’s a little cartoon where it shows kids that represent FireFox, Chrome and Internet Explorer. And Internet Explorer is the kid that’s sucking glue and then the Chrome has got FireFox in the head. It’s called “Browser Wars”. So I’ll put that link in the notes. CHUCK: That sounds funny. So it seems like we are kind of running out of steam; let’s throw one more list of resources on the stack. What about books? Are there books out there that every JavaScript developer should own or read? JAMISON: Everyone says it because it’s true – JavaScript the Good Parts by Douglas Crockford is a great one. AJ: and I don’t know; I read mostly on blogs these days. CHUCK: Right. Whose blogs are you reading? Or is it just whatever kind of comes in front of your– AJ: It’s whatever comes in front, I mean, there are some ones that I’ve seen like over and over again, but the ones that I remember the name of are just the super popular ones that I’ve already mentioned, like the Quirksmode. JAMISON: I think a lot of the Node guys have some interesting JavaScript blogs. Like Isaac has some good stuff. There are couple of other ones whose name escapes me that I will look up right now… one second. AJ: Oh, and we didn’t talk about Node documentation, but their website is absolutely excellent. I mean you couldn’t ask for better docs than that. CHUCK: Where do you find that? JAMISON and AJ: nodejs.org CHUCK: Wow, in unison even. JAMISON: [Chuckles] We have to do a Node episode. We still haven’t done that yet. CHUCK: Yeah I need to email— [Crosstalk] JAMISON: — JavaScript and haven’t talked about Node. CHUCK: Yeah I’m still trying to figure out where Node fits in to my whole development stack. AJ: Well, see this is one thing that I really loved when I started working with Node and it’s that it became more apparent – what if my code need to be modulized for the browser? – Because I’m like, “Great, I can do this on the command line finally, so what can I test by running a test on it from the command line without opening a browser?” And so I started writing modules in a way that I can test modules through Node, and since I follow the common.js system for all the modules I have and I have a pack manager library that just squeezes it all together in the browser, for me, it’s a perfect harmony just to abstract the things that are different and otherwise use code that’s interchangeable. CHUCK: All right, well I think were about done here; so let’s go ahead and do some picks and then we will wrap this up. So AJ, what are your picks? AJ: Let’s see, last week I mentioned Kickstarter right? JAMISON: Yup. AJ: Okay well, I love that image I was telling you about; I think it’s hilarious; the one with the different browsers as schoolyard children, so that will be in there. And I don’t know, if I think of something else, I’ll bring it back up. CHUCK: Right. I’ll go ahead with my picks and then we will let Jamison go with his picks. My first pick is something that I’ve been using for a while. I don’t know if I picked it on the show or not, it all kind of blends together; but one thing that I’ve used is pretty handy here is called Mailplane, and it’s kind of a way of wrapping Gmail. It gives you the Gmail interface, but it treats it like an email client. So basically if you click mailto link, it will actually open it up in Mailplane. Also, it does a whole bunch of other things; you can actually set it up to check multiple Gmail accounts and stuff like that. I love it and I use it all the time. The other one that I use to kind of separate out all the things that I have to keep open, I used to try and used pinned tabs in Chrome, but every time I close the browser, they go away and then there’s no way to make them permanent. AJ: They should not go away. If you go under tools and preferences— CHUCK: (Ooh, I’m going to learn something.) AJ: Not tools… it’s the wrench icon and then yeah, preferences and you click on reopen the pages that were open last. And I do multiple accounts in Chrome, so I’ve got one Chrome from work, or one Chrome profile for home and for some side projects and what not, so I can have multiple logins to multiple things and whenever I close one, Chrome and I open it back up again or that profile, it has all the stuff from before. CHUCK: Interesting. Yeah, I have “continue where I left off” and “open a specific page set of pages”, maybe that’s what I need to do. So I’ve been using an application called Fluid, (this is Mac only, so is Mailplane incidentally. So if you are living in Windows or Linux land, I’m really sorry.) But what it is it basically is kind of an embedded browser that treats your web application like a regular application, puts it in your applications folder and that makes it available for things like  launch bar to pick it up and stuff like that. Really, really, love that and it’s just makes it a whole lot easier because if I need to go… because I have a food diary, I’m using myfitnesspal.com and so if I need to go log my food, because I’m trying to lose weight, then I can just pull up the myfitnesspal app and it actually loads the web page and does all the stuff. And it’s just really, really super handy. So that’s just something that I’ve used that I’ve made part of my work flow. I also use it to access Harvest, which is my time tracking thing for my clients, and I also use it to access Pivotal Tracker, which is the project management tool that I use for my client works. AJ: So in Linux they have one called Prizm, it’s FireFox-based but looks analogous. CHUCK: Huh. Cool. All right, Jamison, what are your picks? JAMISON: I think my Wi-Fi is made out of strings connected together or something. So if I die, that’s an anti-pick. I’m going to pick a bunch of Node stuff ‘cause we just barely start talking about it. One is ExpressJS. It’s a Sinatra-like web development framework for Node. It’s got great documentation and it’s simple like Sinatra. Another one is… I don’t know how to pronounce his name… Guillermo Rouche, he is another Node guy. He made Socket IO and a couple other things but his blog is a devthought.com and he’s got so many insightful things to say about JavaScript that apply to both the browser and the server-side. Nodejitsu.com or blog.nodejitsu.com; Nodejitsu blog is another good one. And then the last one is this article on Functional JavaScript by a local guy, Sean Hess. And he talks about how he has been learning Haskell for a while and he just took some of the functional ideas from Haskell and showed how they can be applied to JavaScript. It’s a good read. So I’ll put all those in the show notes. Those are my picks. CHUCK: All right. Cool. Well, with that, we are going to and wrap this up. If you are getting this in iTunes, and please go and leave us a review; leave us five star rating or whatever stars you think we deserve. You can also leave comments and give us ideas on the website for what you want us to talk about at javascriptjabber.com. And other than that, we will catch you next week! AJ: See ya! CHUCK: Bye! AJ: And Jamison’s dropped out again. [Chuckles]

x