Would you Pay for Sophisticated JavaScript Development Tools? - Lately in JavaScript podcast - Episode 17

Recommend this page to a friend!
  Blog JS Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Would you Pay for Sop...   Post a comment Post a comment   See comments See comments (5)   Trackbacks (0)  


Categories: Site features, Lately in JavaScript podcast, JavaScript APIs

Bret Victor presented his game development platform that provides sophisticated JavaScript development features that allow for instance to interactively change your JavaScript code while the game is running.

Would you pay to have a tool like this to develop your JavaScript projects more productively? This was one of the main topics covered by Manuel Lemos and Michael Kimsal in the episode 17 of the Lately in JavaScript podcast.

Among other topics, they also covered other interesting JavaScript topics like Felipe Moura's Root3D 3D modeling tool based on CSS 3 and JavaScript, choosing task specific JavaScript frameworks with the MicroJS site, the new PHP extension that runs JavaScript code using the V8 engine.

Listen to the podcast or read the transcription to learn more about these and other JavaScript topics that were discussed.

Loaded Article


Listen or download the podcast, RSS feed

Read the podcast transcript

Click on the Play button to listen now.

Download Size: 21MB Listeners: 1471

Introduction music: Riviera by Ernani Joppert, São Paulo, Brazil

View Podcast in iTunes

Show notes


Introduction (00:20)

Root3D: 3D Modeling Editor using CSS 3 and JavaScript (1:29)

Bret Victor JavaScript Game Development Platform (6:40)

Choosing a JavaScript Framework for your needs with the MicroJS site (14:40)

PHP extension to execute JavaScript using the V8 engine (21:12)

BrowserQuest: Browser based Massive Multi-player Game from Mozilla (26:04)

New JS Classes site features to Improve Visibility of Contributors' work (30:27)

Latest JavaScript Objects published in the JS Classes site (35:47)

JavaScript Articles in the upcoming JSMag magazine issue (46:17)

Conclusion (49:35)

Introduction (00:20)

Manuel Lemos: Hello. Welcome to the Lately in JavaScript podcast. This is Manuel Lemos, the regular host of the podcast, and as ever, I have here with me Michael Kimsal.

Michael Kimsal: Are you saying I'm not regular?

Manuel Lemos: You are ever regular.

Michael Kimsal: OK. Yeah, it's a little personal. Good morning!

Manuel Lemos: How are you doing, Mike?

Michael Kimsal: Well, do you really want to know? Because I'm not sure we have that much time.

Manuel Lemos: It will be a long story, right?

Michael Kimsal: Yeah. Well, I have been having back problems and I've been going to physical therapy for the last month, and kind of pricey, rather expensive, and for all of this 'Obamacare' stuff going on, it ain't helped me one dime. I'm still paying for all this physical therapy stuff.

Manuel Lemos: One less vote.

Michael Kimsal: Well, maybe by the time I'm 70, I'll get some of this money that I'm being forced to put in back. 

Let's see, so I have discussed politics. I could probably discuss religion and sex as well, too. I'd like to alienate everybody.

So other than that, that's kind of the TL;DR version is, eh, I'm OK.

Manuel Lemos: Yeah. OK.

Root3D: 3D Modeling Editor using CSS 3 and JavaScript (1:29)

Manuel Lemos: Anyway, on this episode, which is number 17, we are going to cover several interesting topics, some more directly related to JavaScript, others not so much, but always somewhat related. 

We are going to start with one about an impressive tool, I think I can call it that because for now it's more like a demo program, named Root3D, which is basically a 3D editor that takes advantage of the CSS3 3D Transforms that the more current versions of the browsers are implementing.

This tool was developed by Felipe Moura. We had him in a past episode. He was here talking about BrasilJS, which is an event that goes on in Brazil dedicated exclusively to JavaScript. But this is a different topic, a different project of Felipe. 

Actually, Felipe is my co-host of the Portuguese version of this podcast, and in the last episode he has been talking a bit about this project. It is quite interesting. It's quite impressive what can be done with a tool like this.

Michael, did you look into this tool? What did you think about the possibilities that were demonstrated?

Michael Kimsal: Well, I did get it to work. It works in Firefox 11 on my MacBook. It did not work in Chrome, but it worked in Firefox 11. Let me double-check I'm using 11. Yeah, 11.0. 

It's interesting. I'm not much of a 3D modeler person, but it's impressive what can be done. I can add an element, and as I'm adding things, there's a lot of sliders that let me change, in real time, height, width, translucency, rotation and so on, and then all of that gets added to one model that can then be rotated around itself or zoomed in and out from. 

I don't know if I mentioned, well, it kind of harkens back to me for, gosh, 27 years ago, like 3D editors on an Amiga computer I used to have, but those you would set all these things in text files, whether as ray-tracing or 3D modeling, and then you would render something and you'd get something back 15 minutes later.

Manuel Lemos: Right.

Michael Kimsal: What we're seeing now, this is not news to anybody, but for old fogeys like me, it feels just weird to be seeing this kind of stuff, and that I would say even 10 years ago this would've been something that you would get in Flash, you get at a Java applet or an ActiveX control, and it would've been a big deal.

And the big deal now is that in some ways it's not that big a deal, it's just using all these technologies that are built right into the browser.

Manuel Lemos: Right. Well, the part of using text files, I think, did not change much, except that now you are doing it with CSS using 3D transforms...

Michael Kimsal: Sure. That's a good point.

Manuel Lemos: ...and some JavaScript to alter the parameters and make all this real. 

One detail of a comment that Felipe did on this is that basically he started this project, he says, because he was willing to model the furniture that he wanted to have in his new house and he seemed to not be very happy with the existing tools. So I think he was not happy with AutoCAD and whatever are the other 3D modeling tools that exist. 

Well, I think he was making it up just to make an impressive case of his work. It's really impressive. 

For those that are not running a browser that is capable of supporting all the 3D Transforms that are required to be used in this project, they can always watch the videos that appear on the page of the project, and I will be posting the links in the show notes as usual. 

There is also a link to vote on this project in the Mozilla Derby page, so Felipe is encouraging everybody that likes the project to go to that page, vote on the project so he gets more support and more encouragement to keep it going.

Well, for those that really like it, please go ahead and do it because it's always great to see these projects...

Michael Kimsal: I think I voted. I think it has a 'like'. I wonder if that was it. I 'liked' it. OK.

Bret Victor JavaScript Game Development Platform (6:40)

Manuel Lemos: Well, this is one of the very interesting topics that I was willing to cover. Another very interesting topic about something that is relatively recent is about this project by Bret Victor. He's a French guy.

Michael Kimsal: Ooh la la. Ooh la la!

Manuel Lemos: I was not quite sure if this is a tool that is available for download or not, but what it basically seems to be is sort of a suite for creating games. 

As we can see in the videos of the project, there is some support to alter the programming in real time and see how it affects the games in terms of stuff like the movements of the graphics and how the controls affect the animations, and it was quite impressive. 

Michael, did you look into that?

Michael Kimsal: Well, I did watch some of the video thinking that this would be, 'Oh, this is a tool that we can download ourselves.' It doesn't seem to be that, the little French that I could read and then finally translated through Chrome.

This video is just describing some of his thoughts, is what I could tell, describing his thoughts on how he uses JavaScript to do game development. But it doesn't look like this is a tool that's being released or shared with anybody else right now.

Manuel Lemos: Yeah.

Michael Kimsal: Still, it's impressive nonetheless just to see that. 

The point that I got from the article, hopefully translated, is just that JavaScript can do this sort of thing and that this would be hard to do in any compiled language.

Part of the reason that you can do these sorts of things is because of the dynamic run-time nature of JavaScript, so whether that's 100% true or not, I leave to the computer science geeks.

Manuel Lemos: Well, it is interesting because it alters the whole environment as you change the files. I don't know if he was saving the files and somewhat the game engine was detecting if the file changes or reload it somehow because, well, that is what it seemed to be doing, but I don't know if it was the case.

Anyway, I think most people are expecting to have a sort of standalone tool that could work like that to develop games or any other kind of JavaScript application. It would be quite impressive if that would be available. 

Michael Kimsal: Sure.

Manuel Lemos: I'm sure if somebody made that available for a reasonable amount of money, I'm sure it would sell a lot because it's really impressive and useful. 

It certainly reduces the cycle of development. You don't have to save the changes and wait for it to reload all the files and render them again to see how it affects the game play.

For instance, if you are testing a certain stage of a game, which is in the middle of the game, if you have to reload all the files and restart the game, probably it would not be so productive, I think.

Michael Kimsal: This is kind of a side topic, but I wonder, you said, "If people would pay for it," I don't know. I think there's always going to be some people that will pay, but I've just found talking to others, and some of this is recent discussions but kind of my own thoughts, too, is that for a long time I've resisted paying for any tools, any development tools, at all. I'm an open source/free guy.

Manuel Lemos: Yeah. Well, it depends. If you are going to make money from the result of your work, sometimes it...

Michael Kimsal: Yeah, you would think that, but, I don't know. In some ways, the world of professional JavaScript tools, I think, is still yet to come. I don't think we've seen good full integrated tools that let you do a lot of stuff and yet out in the marketplace free or paid. 

Manuel Lemos: Yeah.

Michael Kimsal: I'm just still, I guess I'm surprised at how many people I meet that won't ever pay for any tools at all.

Manuel Lemos: It all depends on what you are doing. For instance, I don't know if you're familiar with that Unity 3D editor?

Michael Kimsal: Yeah. OK, that's an example.

Manuel Lemos: Yeah. There is a free version. It's a freemium model. There is a free version, but if you want to actually go professional and develop for several platforms at the same time, you pay good money for the tool. I think the minimum is $1,500. It's actually a cheap tool, but it's quite complex.

Michael Kimsal: But you have a free version that you can try and all that. I guess I was thinking more of editors like IDEs. I'm really thinking of PHP.

I had a discussion with people a few weeks ago and they were just complaining about all the free editors out there, all these free tools. 'Well, these all suck. This sucks.' 'We could try this one.' 'Oh, that costs money.' It's $100. I realized for some people, if you're in Thailand or Vietnam or someplace, $100 might be a lot of money.

Manuel Lemos: Yeah.

Michael Kimsal: I'm talking to somebody in a coffee shop in America, if I spent $100 a year on coffee, maybe $100 a month on coffee, and yet something that is core central to how they make their living, they wouldn't spend a $100 on.

Manuel Lemos: Yeah. It's basically, as you said, the 'open source people' mentality.

Michael Kimsal: Yeah. You spend $2,000 on a high-end MacBook laptop but you won't spend $50 or $100 on a tool that will save you dozens of hours per month maybe or certainly per year.

Manuel Lemos: That's also in part from people that either develop all their software or develop the software they produce using open source frameworks, so they are not used to paying for anything.

Michael Kimsal: Maybe. Yeah. I didn't mean to derail this too much but it just kind of sparked that when you said that. And I'd forgotten about Unity. Certainly they're out there, perhaps at the forefront of that. I'd like to see more competition in that space.

Manuel Lemos: Right. Well, I think people would pay good money to have a tool because it provides a different level of productivity that they don't see any other tool to provide.

Michael Kimsal: I agree.

Manuel Lemos: What this tool seems to provide, I don't know if this is a standalone tool or if it is part of a larger development. I don't know if it even has a name. You just call it 'The Bret Victor Tool'. 

Anyway, I think it would be interesting to mention it because it was all related to JavaScript. On the videos, the guys had it in JavaScript which started his engine to control his game. But, well, if he has a tool, I think the world would be waiting. 

Now, also mentioning games, I think when we talk about JavaScript, it's not just browser-based games because you can use, for instance, JavaScript to create games that will run on environments supported by Titanium.

Michael Kimsal: Oh, yeah. Yeah.

Manuel Lemos: Regarding this, we'll be talking about a class that was just recently published that can work in devices that are not exactly browser-based. You can take advantage of that class, although it is not specific to any type of device.

Choosing a JavaScript Framework for your needs with the MicroJS site (14:40)

Manuel Lemos: But anyway, moving on with the podcast, another topic that I was willing to talk about is about this site, microjs.com.

Michael Kimsal: Ah, yes, microjs.com.

Manuel Lemos: Yeah.

Michael Kimsal: I was just introducing it for you. There you go. I could sing it. Would you want me to sing it?

Manuel Lemos: I don't know, maybe in a foreign language. Oh, you already passed the French...

Michael Kimsal: Oh, que lastima. Chanson d'amour, chanson qui s'appelle, "Microjs". Microjs.com. 

How's that? That was pretty good, wasn't it?

Manuel Lemos: You are going to give a hard time to the guy doing the transcription.

Michael Kimsal: Sorry, sorry.

Manuel Lemos: Well, I think he's already having fun when he'll be listening to the podcast.

Michael Kimsal: What's his name?

Manuel Lemos: Well...

Michael Kimsal: You don't know. Hello, whoever you are, and good morning!

Manuel Lemos: Yeah, because I keep switching between different people.

Michael Kimsal: Task-skipping. OK.

Manuel Lemos: Anyway, getting back to this Microjs site, which is basically an interesting site, which I think it is the result of the abundance of small JavaScript libraries to do simple things but there are some that can be used for similar purposes. 

What this site helps you is to pick libraries for certain purposes. You just point the purposes on which you would like to use existing libraries, for instance, games, and it will list just a few libraries that would be suitable for whatever purposes you pick.

And then, I think it is interesting, I've never seen a site like this. It may be useful for not just to pick the libraries but it is also for people to know about libraries that they were not aware of. It is interesting to give some exposure to those libraries that otherwise would probably go anonymous.

Michael Kimsal: Ah, this is from Thomas Fuchs? I hope I'm saying his name right. I'm probably not. He's the guy behind Prototype, I do believe, or Scriptaculous.

Manuel Lemos: Yeah.

Michael Kimsal: Yeah. So this is just a collection of tools. It's really a nice little, what's the word I'm looking for, purpose-based directory. Apologies to Joel Osteen. But you select 'I want to do data manipulation,' 'I want to do JSON,' 'I want to do templating,' and it's showing you all these really small, it's giving you the size.

'Here's a micro-templating class that's .4k, here's one that's 1.9k, 2.3k,' and so on. So you can see pretty quickly if something's big or small and maybe you want to focus on just the smaller ones.

What's interesting is even though it's all about Microjs, I half-expected these to be sorted by the smallest libraries first, and there doesn't seem to be any particular order to these as they come up.

Manuel Lemos: Yeah. It's probably on their to-do list.

Michael Kimsal: Maybe. Or maybe I'm just so advanced in my thinking that I came up with some functionality that no one had ever considered before. That's a possibility, too.

Manuel Lemos: Yeah. Well, I don't know what was the final goal, but it seems to be to give exposure to libraries that otherwise would probably not get any attention. 

Michael Kimsal: Yeah.

Manuel Lemos: Well, I know some of these are more popular than others, but most of these that are listed here are totally unknown for me.

And it seems that if not all, at least part is available in GitHub, and I think this site aims to be somewhat a complementary function to GitHub, since when you work in GitHub as an author and publish your project there, it does not get automatic exposure. You have to do your own marketing.

Michael Kimsal: Bastards.

Manuel Lemos: Well...

Michael Kimsal: Oh, I'm sorry. Can we say that on the podcast?

Manuel Lemos: Obviously it's not their fault. I think it's not their purpose. Can you imagine them doing a specific marketing effort for many thousands of projects? It would be information.

Michael Kimsal: I can. I can certainly imagine it.

Manuel Lemos: Well, you can use this. Well, since these are JavaScript libraries, they could also publish it in JS Classes and any other sites that...

Michael Kimsal: Ooh, that was so subtle, that you just slipped that in there and it didn't... It's like you weren't even trying. That was so...

Manuel Lemos: Maybe it's just a comment that's related to somebody who was actually complaining about sites like JS Classes and PHP Classes, but they serve a purpose, which is, to keep people in touch with libraries and the packages of their own interest.

They were comparing those sites with GitHub, but in the end, GitHub does not do the marketing effort that people hope to get. 

If they just drop the libraries there, nothing happens. You have to do your own marketing. And this site Microjs somewhat attempts, well, I'm not sure if that is the intention, but it can serve that purpose to giving a bit more of exposure, and actually more targeted, because you can select the purpose that you want for the libraries that you are looking for and it narrows the search and shows you only those that match your purposes as you specify them.

Well, I think this can be useful. Anybody that was looking into libraries for any specific purpose can go here. It's very simple, the URL, microjs.com. But it will still be listed in the podcast episode notes.

Michael Kimsal: I could sing it again if you'd like.

Manuel Lemos: I'm not sure.

Michael Kimsal: OK, obviously you don't want that. That will be in the bonus cuts, yeah. OK.

Manuel Lemos: OK, we can put in a bonus track after the episode, a version of the podcast, URL sung by Michael Kimsal.

PHP extension to execute JavaScript using the V8 engine (21:12)

Manuel Lemos: Anyway, moving on. Now talking about something, I did not see this before and I'm not sure if that is recent, which is a new extension for PHP that can integrate with V8. V8 is that JavaScript compiler engine done by Google that powers several projects like Google Chrome and Node.js as well.

What this extension seems to allow is that you execute JavaScript code from a PHP script and interact with...I'm not sure if 'interacting' is the right word.

Michael Kimsal: No.

Manuel Lemos: But I think you can test parameters to a JavaScript code and get back some results.

Michael Kimsal: To the raw code. It looks like to the raw code you can, but you can't, say, create JavaScript objects and interact with them in PHP like you could with the Java bridge some time ago. It's not a bridge between it. It looks like it's just, and I shouldn't say 'just', but it looks like it's something that executes.

Manuel Lemos: Yeah.

Michael Kimsal: You just give a string and then you say to the V8 engine object, 'Hey, execute this string,' and you get whatever the results of that output are, or you can get a V8 JS exception object to get one of the two things back. It looks like you'll either get a string back or an exception back.

Manuel Lemos: Right. Well, I think it can still be useful. Probably it would be even more useful if, well, just because it does use V8, which is not exactly the same as running Node.js programs because Node.js itself comes with extensions that are part of the Node.js project, and I think they are not exactly written in pure JavaScript. Well, anyway.

Michael Kimsal: It looks interesting, but it looks very just experimental, and probably this is a proof of concept to search for somebody to say, 'Yes, I can do this,' but I'm just not sure what the use case for most people would be right now.

Manuel Lemos: Well, if you have some JavaScript code, you can run it, so you don't have to port it to PHP to use it from your PHP scripts. I don't know what would be the use case for this in practice, but I'm sure somebody will remember in a certain situation. 

Well, for Java, I know there are some very useful use cases. For instance, certain banking systems only allow you to interface with them using some Java JARs, and you would have to use those JARs to communicate with the bank.

Michael Kimsal: Yeah. I guess I can see some use cases for it, but even in that case, the idea that PHP Java bridge, I played with it a little bit. At the time, I didn't have any pressing need for it, but it would seem to me, if you have JAR files that you need to use and access, in some cases it might be easier if you're doing a small amount to load them into PHP and use them.

Anything bigger than a couple of use cases and it might make more sense to just drop them into something else and write a small Web service around it to expose that and just have two processors running. You've got your...

And I would think the same thing with the V8 JS here. For small amounts, yeah, but if you've got a large set of JavaScript, you're not going to just put it in one string and execute it. You're going to want it to run long-term, probably do things that it doesn't seem are possible with this right now.

Manuel Lemos: Well, one use case brought to my mind just now, for instance, imagine you want to render some HTML that has JavaScript inside. If you don't have a real JavaScript engine, you cannot run it to see what is the outcome. At least this way, maybe you could use this V8 JavaScript engine to assist in that task.

I don't know if it will be enough probably. I don't know if this V8 engine fully supports the DOM objects to be able to do that. I don't know. I think that could be a possibility, but I did not even check this close enough to assert whether it would be the case or not.

But, well, whoever likes these experimental projects specifically dealing with languages can always try and see what it would be useful for.

Michael Kimsal: There you go.

BrowserQuest: Browser based Massive Multi-player Game from Mozilla (26:04)

Manuel Lemos: OK. Well, now, moving on with the podcast, we are going to pass to our regular session of...

Michael Kimsal: You don't want to talk about BrowserQuest, the big game release from Mozilla?

Manuel Lemos: Oh, you are right.

Michael Kimsal: I guess you don't want to talk about it.

Manuel Lemos: No, no. That's fine. It's just that I did not note it down here in my...

Michael Kimsal: Your son likes it so much. He's just such a BrowserQuest addict, I just thought we should mention it. 

Manuel Lemos: Yeah.

Michael Kimsal: BrowserQuest is just a game that came out today from Mozilla. It actually reminds me of, I guess this is a very standard game interface, but the intro actually reminds me of King's Quest for some reason. BrowserQuest, this is a massively multiplayer adventure game all written in the browser. Works in Firefox 11. Broke Chrome for Manuel.

Manuel Lemos: Yeah, right.

Michael Kimsal: Can you believe that? A Mozilla project breaking Chrome. I thought he must have done something wrong, so obviously not...

Manuel Lemos: I'm using those in stable versions of Chrome.

Michael Kimsal: Yeah. Oh, the ones that get released? Ooh, sorry.

Manuel Lemos: You can bring more on that. It's not Mozilla's fault.

Michael Kimsal: The core idea behind this BrowserQuest is it's a very basic role-playing game and you move around and do stuff. There's not a lot of purpose to the game so much in like there's not a princess to save, anything like that, but there's just a lot of people online and you can move around and interact with them some.

But the more interesting thing here is that all the code was put on GitHub today, so people can experiment with it and test this out and run it on their own machines, too.

Unfortunately, it seems to play a lot of sound and music, and I couldn't find a way to shut that off. I hit a little icon for sound and it still kept playing. So maybe it's not perfect in Firefox 11.

Manuel Lemos: Yeah, it is still a beta.

Michael Kimsal: Yeah.

Manuel Lemos: Well, anyway, it just seemed to be...

Michael Kimsal: BrowserQuest.mozilla.org is the address for that. Thought I'd share that. Now, moving on.

Manuel Lemos: Well, I just wanted to comment that it just seemed to demonstrate some technologies, probably Web Sockets, I don't know, because all these games require a great deal of interactivity with the server because, being multiplayer games somewhat, well, the interaction between players has to be done through a server.

So it's very likely it is related with Web Sockets and probably something else that assures that the games are quite interactive.

Michael Kimsal: Yeah.

Manuel Lemos: Anyway, did you try to play anything of the game? Is this the real game or is this just fake?

Michael Kimsal: Well, it's a game in that you can go around and do stuff. I don't think there's an end goal in mind so much. I just poked around for a little bit. I was trying to do something else and the sound was a little too loud for me. 

But I sent you a link to a mozilla.org article which has a bit more information about the tech behind it. It is Web Sockets and there is Node.js behind it and Canvas and Local Storage and all that stuff, so it looks to be fairly complex. And there's mobile versions and all that kind of fun stuff.

Manuel Lemos: Mobile versions? Do you mean browser-based or...?

Michael Kimsal: iPad and iPhone.

Manuel Lemos: Right, but what I was asking is will those mobile versions be native applications or browser-based?

Michael Kimsal: No, they're not native apps. They're using a mobile browser, sort of looks like.

Manuel Lemos: Yeah. Well, anyway, it's probably an interesting project just for those that are willing to learn now that you can build games with these technologies.

Michael Kimsal: Sure.

Manuel Lemos: I'm sure many people will be interested in this, although there are plenty of projects already used for this purpose of interaction.

Michael Kimsal: There you go.

Manuel Lemos: I don't know if they have any figures on the number of simultaneous players that can be...

Michael Kimsal: There were 75 when I was on just a minute ago.

Manuel Lemos: But I do not see any information on server requirements window, many simultaneous users.

Anyway, maybe this is something to explore and learn more about to see if this is something that can scale to a large number of players or not. Well, there's another interesting topic to study for those that have more time and are interested in these topics.

Michael Kimsal: OK.

New JS Classes site features to Improve Visibility of Contributors' work (30:27)

Manuel Lemos: OK, back to what I was going to say. I totally forgot that you wanted to mention about BrowserQuest. But moving on, we are going to move on to one regular section which is talk about the latest classes that were published on JS Classes. 

Anyway, I just wanted first to comment on a few features that were added recently to the JS Classes site as well as the PHP Classes site, which are sites that are based on the same code base.

One of those features is basically one that allows authors to link themselves, link their packages, the pages of their packages, to a page that they could have on Google Profiles or Google+. 

If you are an author on the Web with a Google Profile page, you can have a link to your page in the JS Classes site that lists all your packages, and that hints Google that you are the author of those codes.

For instance, if somebody or some other site copies the pages of JS Classes or some other site that uses this kind of linking, Google will still be able to know that this is the original page and any references to your work will be listed first to your author page in JS Classes. 

This was just a new feature that was actually notified to all authors that are following the site so they can add these links, and the end result of this initiative is that eventually they will get more visibility in search engine results.

Another side effect that would probably happen later is that, for instance, somebody searches Google for your name, these pages will appear in the search results with your picture on the side, actually the picture that you use on Google Profiles or Google+.

And this gives your pages a distinguished appearance in the Google search results. It's not a big deal. It's just something that interests mostly authors.

Another feature that was released recently is a new mode that authors can use to expose their packages they published on the JS Classes and PHP Classes sites.

Basically, what happens is that when some users come to the site, they start seeing the files of the packages to learn about the code, and if there is this requirement of the user has to be registered to access the files, some users may be upset and not be willing to register, so they may give up on studying further your code. 

So there is now a new mode that authors can switch in their package options, so the user is only required to be registered if they download the whole package or actually the class files. 

So if they just want to see examples, they will not be required to be registered and logged in to see the code, and this eventually also will result in a greater exposure of the package files to the search engines because they will be able to see the whole code, index it, and if it matches more searches, eventually will bring more users to visit the packages and learn about the projects.

Finally, one feature that is at least not implemented by the time we are recording this but it will be implemented soon, so maybe when the users are listening to this podcast it will be already available, which is something that is nothing new but the site not yet features, is the possibility to register to the site using a Facebook account, and eventually other site accounts that support OAuth. I think GitHub and Twitter and others support OAuth, and they will be able to log in using those accounts.

This hopefully will minimize the chance of having users to lose interest just because there is this registration requirement.

Anyway, this was just a summary of the latest features that were implemented in the site. I just wanted to mention them here. They are mostly targeted to users that are also authors that submit their own work in the site.

Latest JavaScript Objects published in the JS Classes site (35:47)

Manuel Lemos: But now moving on to the actual section in which you mention the latest classes, objects, published in the site. Michael, which classes would you like to mention this month? 

Michael Kimsal: Well, there's a couple that jumped out at me, both in visual. 

One is called Filter.js, and this demonstrates a way of applying different types of filters, whether it's color filters or edge-detection filters and things like that, on images. 

That is from foo123. Oh, it's from Greece. And I don't really think his name is 'Foo'. As I was telling you before, it's probably Stavros123.

Manuel Lemos: Are you sure there isn't anybody called foo123 in Greece?

Michael Kimsal: Well, it might be a nickname. But Foo, my extensive knowledge of the history of names in the Mediterranean region leads me to believe that Foo is not a traditional name.

It might be one of these newfangled names, like in America we've got, oh gosh, you've got Chase and Jordan and things like that, which were not names 20 years ago, 30 years ago. So maybe Foo is a new wave of Grecian names.

Manuel Lemos: Foo123.

Michael Kimsal: Yes, foo123. Thank you.  So the filter class was one. The other one was HAAR, which I think basically is encouraging piracy of his work. HAAR is another class that foo123 also contributed all the way from Greece. It's a face-detection algorithm in JavaScript. It's actually face detection and mouth detection.

Now, I ran it with the sample face that he provides. It didn't detect the face. I was trying to trace through the code, and honestly, not that I couldn't understand it because it's so complex or just a lot of math stuff in it, but it did detect a mouth.

There is a separate example code for detecting a mouth, and it actually detected a mouth, and that made me a little more curious about what it is actually doing in the code.

Unfortunately, I'm not good enough to figure it out. I can't read these JavaScripts too well, it was all Greek to me. I'm kidding, I'm kidding. It was all JavaScript to me.

But those were two kind of recent contributions in the last month or so that jumped out as interesting.

Manuel Lemos: Yeah, actually, well, the filter one is, if you look there, although it's not exactly something trivial to do in JavaScript, it's not exactly something new to do in any language.

It's mostly applying transformations to pictures. It all works on top of canvas but the actual algorithms are implemented in JavaScript. So if you want to do some image processing, you can do this all with this package, which is not a very small package. It has many small components.

Well, now for the HAAR package which basically can detect shapes in general, it's not just faces or mouths, what happens is that it requires a sort of data file. Well, it's not actually data.

Michael Kimsal: Pattern information of some sort.

Manuel Lemos: Well, it's data, but it is in JSON format, and it's a data structure that defines several parameters, well, actually many parameters, to guide the actual detection algorithm to detect that specific type of shape.

And from what I could understand, not that I am an expert on this topic, but there is this OpenCV program that generates these data structures.

Michael Kimsal: Yeah, and it says here, "This is a port of OpenCV," so yes, there you go. You burst my bubble, that's excellent. Thank you so much.

Manuel Lemos: No, actually, it's not a port, but it generates those data structures that are used to perform the actual detection, so the actual class is sort of generic for detecting shapes.

But if you provide different data structures for different shapes, it will be able to recognize them so you can use the same class for different types of detections that you want to perform.

This is interesting because the same author has also submitted a PHP version of this class to the PHP Classes site, and this is very interesting because it's not a trivial type of application of JavaScript or any language and it's quite advanced.

Well, in this case I think you could only detect a mouth because that's the type of shape for which the author provided the so-called data file, the data structure. I think you would need to download separately the other type of data file for detecting faces in general.

Anyway, this is interesting, and I am sure a lot of people will appreciate. 

Well, on my part, I also would like to highlight a couple of classes. Well, this month we did not have as many as in the past month, but we often do not have all the time to cover all the classes that were published, but I would just like to comment about this jQuery URL Parser.

Well, I'm not sure exactly why it requires jQuery, but the basic function of this, packaged by Hensel Hartmann from Switzerland, is to do something very similar to the parse_url function of PHP. If you have been programming PHP, you are probably familiar with the parse_url function, so you will be able to use similar functionality.

Actually, this class, does a bit more than parse_url in PHP. You can extract not only the host domain but also the subdomain. Also, for instance, if you have a path in the URL, it can split the actual base name of the path and the extension of the path for paths that end in .something. Well, this is just a variant of something that the parse_url does in PHP. 

Now, another package that I also would like to mention is named Gestures, and this one is quite impressive, again by Arturs Sosins from Latvia.

Again, he submitted a very impressive package that can recognize gestures that users can make, for instance, using the mouse or probably, I'm not sure if it will recognize touch events, but it can at least recognize mouse events with the user clicking and dragging the mouse on screen.

By doing that, if the user draws a certain shape with this classic, it can detect specific shapes and you can configure, you can create the patterns of the shapes that it can recognize. 

This is quite impressive because if I wanted to think about this problem of recognizing shapes that the user may draw with a mouse, I would not be able to figure it out because I would need to study algorithms that are able to perform this kind of detection.

Michael, did you look into this package? What did you think about it?

Michael Kimsal: Well, it's different. It's not something that really, how do I put it... Having used touch tablets for a while, the iPad for a while, it seems like, 'Oh, yeah, of course. This is just something that you can do,' and it wasn't until I started thinking about how would you actually do this in code and recognize these sorts of gestures and keep track of this data that it seemed that much more impressive.

Some people that can do these sorts of things seem to have much stronger fresh math backgrounds, a large data set or large advanced maths, but I don't have that, so this stuff ends up seeming a bit more like magic to me, and probably to somebody that has a strong algorithmic background this is probably trivial stuff.

And I'm not trying to trivialize what Arturs has done, but it seems magic to me.

Manuel Lemos: It is interesting. For those that want to actually know more, there is a tutorial video that Arturs provided showing what it does in practice. Basically, you can see on the video that, well, besides recognizing the actual gestures, the video also shows the shapes being drawn on a canvas in order to make them appear on the browser.

This is very interesting because when you draw a shape, you can see actually what you have drawn, and if you have completely a shape that it is ready to recognize, it immediately shows the name of the shape that was recognized. And it seems to be quite fast, so it's not something processor-intensive that would require a fast machine to do this kind of detection.

Well, anyway, we have covered several interesting classes. Hopefully next month we'll cover a few more as usual.

JavaScript Articles in the upcoming JSMag magazine issue (46:17)

Manuel Lemos: Now we're going to move on to our final section on which Michael will comment on the upcoming issue of the JsMag magazine. So Michael, what interesting articles can we expect for the next JsMag edition?

Michael Kimsal: Well, we've got a few. 

Mike Schwartz is continuing, he's been doing a series on server side JavaScript for a while, and really the past several issues he's been talking about various enhancements and modifications to SilkJS, which is his server side JavaScript framework, and he's carrying on with some improvements to SilkJS, which he talks about there. That I know about.

We've also got a piece from Jeanine Meyer, who's actually written some books in the past and is a professor, I think she's a professor up someplace in New England area. She may be from someplace else. She's contributing a piece on data-driven content and how to combine that with doing some videos in canvas. The demo that I saw was kind of neat and we've got an article about how she works with that.

We've got another piece from Trevor Burnham, who is actually the author of a CoffeeScript book from Pragmatic Programmers, I think. He wrote for us a few months ago and he's got another piece this month on asynchronous JavaScript. 

And Arturs Sosins also has a piece for us on Titanium. So, yes.

Manuel Lemos: Oh, the unknown Arturs.

Michael Kimsal: So we've got some names we've had before, some new names, and there's a couple of other pieces we might be able to squeeze in before next week. I'm just not sure on those right now.

Manuel Lemos: Yeah, and you are always is open to get more from other people that may be listening.

Michael Kimsal: Oh, JsMag.com. Yes, if anybody's interested in contributing, we're always looking for people to contribute their pieces. If you write a blog and  you're thinking about, 'Hmm, this might be a good blog article,' it might be something we'd be interested in working with you with.

And we have editors that work with you and help knock your, what might have been just a first-draft article that you'd put on a blog, we'll work with you and help test out the code, help make sure that it reads properly. Maybe things are confusing to people on first pass, so we're a second set of eyes. We're looking for people that have some interesting things to say about JavaScript.

Manuel Lemos: Well, I just wanted to ask, have you been having any new authors that were actually listeners of the podcast and learned about your magazine this way?

Michael Kimsal: I don't know yet. There actually have been a few in the past couple of weeks that have registered, but I haven't talked to them to specifically know where they came from yet. When people register, I don't think there's a specific thing saying, 'Where did you come from?' Maybe I should put that on there.

Sometimes we get, and if anybody's listening, this could've been you, sometimes we get people that sign up and register and I will email back and say, 'Hey, welcome. How are you doing? Let's get it going,' and then they never follow through. So if you get something from me, please write back. Don't be shy. I don't bite.

Manuel Lemos: Well, if Gmail does not eat your email messages in their mailbox.

Michael Kimsal: That could be it, too.

Conclusion (49:35)

Manuel Lemos: Yeah. Well, anyway, we have just ended our podcast. I think it was an interesting podcast. We covered some topics that were not so usual. I just would like to apologize that I am kind of slow today. Actually, I would say slower than usual because I'm kind of having a beginning of a flu.

Michael Kimsal: Get well soon.

Manuel Lemos: My nose is not working very well and I feel a bit sleepy. But hopefully next month, I hope we have a more animated podcast than today. Hopefully Michael helped to cheer up on this episode and it was not so bad.

But anyway, thank you all for listening, and feel free to post your comments and suggestions for future episodes in the blog on which the Lately in JavaScript podcast will appear in the JS Classes site.

So on my behalf, that is all for now. Thank you.

Michael Kimsal: Excellent! Bye, bye.

You need to be a registered user or login to post a comment

Login Immediately with your account on:


1. Development tools - Gerry Danen (2012-04-05 04:56)
I would pay for usable tools... - 2 replies
Read the whole comment and replies

2. Interactive editors - Arturs Sosins (2012-04-04 20:23)
Editors allowing to touch your code... - 1 reply
Read the whole comment and replies

  Blog JS Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Would you Pay for Sop...   Post a comment Post a comment   See comments See comments (5)   Trackbacks (0)