Single Page Apps Trend, Top JavaScript Developers in Every Country, Multi-threading for Node.js - Lately in JavaScript Podcast Episode 11

Recommend this page to a friend!
  Blog JS Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Single Page Apps Tren...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (1)  


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

Single Page Apps are becoming more and more a trend since the introduction of of the Hash Bang (#!) convention in the URLs that makes AJAX application pages crawlable by Google and other search engines that follow the convention. JavaScript frameworks that help building single page apps is one of several topic that Manuel Lemos and Michael Kimsal cover in the Lately in JavaScript episode 11 podcast.

They also talk about a new initiative to distinguish the top JavaScript developers in every country in the JS Classes site, as well a new extension to add multithreading support to Node.js, PhoneGap to become an Apache project, and more.

Listen to the podcast or read to the transcript to learn about these and other JavaScript topics of interest.

Loaded Article


Listen or download the podcast, RSS feed

Read the podcast transcript

Click on the Play button to listen now.

Download Size: 24MB Listeners: 1361

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

View Podcast in iTunes

RSS 2.0 feed compliant with iTunes:

Show notes


Introduction (00:20)

Q-Oper8 - Multithreading for Node.js (7:13)

SockJS - Websocket emulation (12:30)

Single Page Apps with Pagify (18:53)

PhoneGap to become an Apache project (31:07)

PhoneGap build service (35:24)

Top JavaScript Developers in Every Country (40:21)

Latest Objects published in the JSClasses site (44:02)

Upcoming articles in the JSMag magazine (52:11)

Conclusion (55:20)

Introduction (00:20)

Michael Kimsal: Hello, welcome to the Lately in JavaScript Podcast.  This is Manuel Lemos the host of the podcast, and as always I have Michael Kimsal our regular co-host just returned from the Far East, is that correct?

Michael Kimsal: (Speaking Russian) I would think I was saying hello or good day, (Russian), that's good evening.

Manuel Lemos: Okay, those are weird words, nobody would guess that they would mean something that looks nicer.

Michael Kimsal: Yeah, the transcription woman is going to have a heck of a time with that.  "Zdrast" is probably z-d-r-a-s-t, for example, it's sounds that my tongue can't even make very well.  I've always had a hard time getting my tongue around my R's.  The British listeners will get that one.

Manuel Lemos: Oh, really?

Michael Kimsal: Yeah.  So, anyhow, I didn't mean to derail this whole thing, we're only a minute into this.  So how have you been?  You've been traveling as well.

Manuel Lemos: Yeah, just returned from Googleplex a couple weeks ago, there was an event over there, they organized to sort of gather people from around the world that helps in the forums of the Google products.

I don't know if you ever noticed if you go to a forum of any of those Google products near the profile picture and the person's name in each message there is sort of a level of participation in the forums, and those people that participate for a long time are called Top Contributors.

Michael Kimsal: TC.

Manuel Lemos: Right.  So, since I've been a Top Contributor for a Google product for many years they invited me there.  I met people from everywhere in the world and it was quite interesting. It was a bit tiring but it was a very good experience despite all the stress of traveling for many hours and waiting for planes. But it was well worth it, since they organize it again next year I'll be there.

Michael Kimsal: Cool.

Manuel Lemos: What about you, did you get tired as well?

Michael Kimsal: Well, some.  I've been to Australia and that's about a 32 to 34 hour door-to-door trip.  This door-to-door was probably about 20 hours so it wasn't quite... I think going there it was 18 or 19 and coming back is about 20, 22 or something, so it wasn't as bad as yours, yours was about 30 or so you said?

Manuel Lemos: Yeah, because I have to take domestic flights in Brazil and then inside U.S., but it was bearable but it's tiring.

Michael Kimsal: Yeah.  I did a lot of walking, as I mentioned before to you, and used the Metro but did a lot of walking, and I thought I was going to lose a lot of weight because I was doing all this walking several miles per day, but it didn't work out when I would have scoops of ice cream in the evenings I think it balanced out in the end.

Manuel Lemos: Well, it was also nice because I met some people in San Francisco PHP Meetup Group, I posted a message that I was coming there and like half a dozen people joined me, despite more wanted to go and in the end never happened.

Michael Kimsal: I tried to meet JavaScript people in Moscow and I ended up, well, I put out a couple of Tweets and had a few people, I was emailing with some people and there was a few people that were going to show up at one place, but one guy ended up having to leave the country, he had some business travel that came up, somebody else was sick, somebody else just never showed up, so it ended up just being me and one chap, Evgeny, and I'm not even going to try to butcher his last name, but he doesn't speak much English, and (Speaking Russian) is about the extent of my Russian.

So we both sat in the Wi-Fi enabled café with iPads and Google Translate up and communicated.  It was interesting but we had probably about a 20 minute conversation which took about two hours to have because of the translation stuff, but still he was really fun, I started off, we talked about JavaScript, this JavaScript podcast.

And he's using SproutCore which I said gosh that seems really complicated, and he said well something like it's got a bit of a learning curve and my bosses don't really want me to use it, but I'm insisting on using it because it's so powerful, so it's interesting, SproutCore has spread over to Moscow.

Manuel Lemos: Well, it's great, at least you managed to meet somebody.  My expectation is that at least half of the people that promised that will be there they won't make it for some reason, but it was nice anyway.

Michael Kimsal: You know at the end of the day for a lot of these things for me it felt like a bigger deal because it's not quite a vacation but it's a new experience for me.  People in that city life comes up and they don't make it, but I had a great time with Evgeny and I hope next I go, and I'm kind of tentatively planning on returning to Moscow at least one more time next year, I'd like to get a larger group, hopefully people that speak a bit more English.  I don't think my Russian's going to be much more fluent to talk tech, but maybe we'll see.

Manuel Lemos: I think it's easier to meet more people if you go to an actual event.

Michael Kimsal: True.

Manuel Lemos: Because especially if it is a paid event because when people pay...

Michael Kimsal: They're going to go.

Manuel Lemos: ...they end up going because they already paid.  But, okay, let's move on because this is the Lately in JavaScript podcast.

Q-Oper8 - Multithreading for Node.js (7:13)

Manuel Lemos: Well, I've been looking at some interesting news, several things related to JavaScript.  One of those things is the Q-Oper8 which is basically an extension from what I understood for Node.js that will enable the possibility to start and manage threads.

I mean you can create threads and have separate tasks running in parallel, so you do not hold the main thread just to run different tasks in parallel. This is actually very interesting because it was something that was being pointed to as a limitation in Node.js.

I think the core can already fork processes if I'm not mistaken, but it's not the same thing because fork processes are a bit more expensive in terms of resources that they consume from the server, the machine which they are running, and having multithreading support makes node.js even more exciting.  What do you think, Mike?

Michael Kimsal: Well, I'm looking, I'm reading here about the pieces, anybody that's listened to me talk knows I'm not a Node expert, I've installed it and played with it and done a little bit of hello world stuff.

The frustrating thing for me was that some of the plugins that I wanted to use I couldn't get them working, I submitted a bug report and nobody could help, but through NPM, the Node package manager, so it looks like this Q-Oper8 is how you install that, NPM install Q-Oper8 looks pretty basic.

But I'm reading about this and it says the architecture is such that there's a master node server process and then a pool of persistent child Node processes which those two points sound very much like a standard Apache, you basically have your master Apache server and then you have the pool of Apache servers that will...

Manuel Lemos: Process.

Michael Kimsal: It's not really apparent but, yeah.  But here the interesting thing after that is that there's a queue of pending actions or pending requests, and I'm guessing and I haven't read much of this yet, but it looks like the server, the master server talks to the queue and there's a queue processor that spins off, it kind of files the requests in the first-in, first-out over to the particular Node processes, child processes.

So, it's an interesting take, there's only right now anyway with current architecture there's only so many ways to solve these problems, but the idea of sticking a queue in there is interesting to me, kind of bundling that with the server architecture at the same time.

Manuel Lemos: Yeah.  Well, actually I think that's the way the bind/listen calls work, they sort of take a queue of requests and then handle them as soon as possible, but using multi-threading it distributes them to different threads, so you can handle many simultaneous requests at the same time.

Michael Kimsal: But compared to an Apache situation where you have to say what your maximum number of child processes are, and if they're all being used at some point somebody's going to make a request to your system and it's going to say, hey, it's just not going to respond or something.

Manuel Lemos: It will queue, actually it will queue.

Michael Kimsal: I haven't seen it queue.  I typically see stuff...

Manuel Lemos: I think it's O S level if I'm not mistaken.  When you have an excessive number of requests practically causing a denial of service the request may end up being handled later, but if the machine is too loaded for the number of the requests it probably will never happen, all those queued requests will be queued there and never be handled.

Michael Kimsal: Processed, yeah, yeah.

Manuel Lemos: Well, anyway, this is I think it's a significant improvement, although from what I understood this is not exactly built in the core of Node.js, but hopefully it will be integrated, we'll see. I'm not really following under the Node.js developments very closely, but I hope that is what it becomes sooner or later.

Michael Kimsal: Yeah.

SockJS - Websocket emulation (12:30)

Manuel Lemos: Okay, another topic that I wanted to... that I think it would be worth commenting is this library, SockJS which basically is meant to be a wrapper for implementing WebSocket emulation in different browsers including those that do not support it.

WebSocket is one of those so-called HTML5 API's that is being added to the more modern browsers, and basically it allows you to establish network connections to servers up there so you can implement on a more interactive communication with some protocol that allows other than HTTP, but since not all browsers support it, this SockJS library it provides an emulation using other communication methods, eventually XMLHttpRequests and some other approaches.

I did not get much into the details but I thought it was interesting because WebSockets have this potential of enabling applications that require more interactive communication with the servers.  Michael, have you looked into this, do you have any insight?

Michael Kimsal: Well, as with many things this is interesting to me, and I wonder... I think at this point if you wanted to so some app that required WebSockets, not knowing how far the SockJS library is something like this would still be something you would probably want to investigate, depending on what your needs are this may be far enough along that it would work for you.

I'm drawing a blank here because I was reminded of another project recently that this reminded me of, not because of the WebSocket aspect but more just the idea of this is an emulation layer or it's a wrapper for browsers or JavaScript environments, I should say, that don't support feature X.  And I'd like to think that these things wouldn't be necessary but unfortunately they are.

Manuel Lemos: In the future.

Michael Kimsal: Yeah, we'd like to think that but I have a feeling that IE 8, for example, I don't know if that supports WebSockets, my guess is that it doesn't, my guess is that IE 9 does.

But we're going to be probably stuck with some browsers for a long time, for several years, that people will need to at least make some gesture towards to say, okay, this works with native WebSockets but will include this, for example, SockJS shim library or extraction library, but to whatever extent any sort of wrapper like that is probably going to end up introducing some overhead in the emulation.

I'm not trying to denigrate the work these guys have done, I think it's fantastic that people are taking these sorts of initiatives into their own hand because the browser makers aren't doing it.  I guess I may be singling out IE, kind of the legacy IE's here for a long time, for a long time we're going to have to support them, so to the extent that this becomes necessary for some people I'm glad to see libraries like this, I just wish they weren't necessary.

Manuel Lemos:  Right.  Well, I agree, I think I'd rather not rely on this just because even the emulation for browsers that do not support it I'm sure it will be limited somehow for some reason, because if it was possible to do WebSockets without more explicit support probably WebSockets API would not have been necessary.

And, other than that, what I understood is that those emulations for those browsers that do not support WebSockets it relies on some server side component that will probably route the requests to an actual socket server, based server TCP, or something like that.

Michael Kimsal: Even here in their documentation they say that SockJS does support in the emulation layer it falls back to a polling mechanism for IE 7, for example, but they also say here that that technique is quite slow but there's really nothing they can do about it.

So, the bigger answer culturally is to get people to stop using older browsers and keep up with current browsers, I just hope we don't get ourselves into a situation where...

Manuel Lemos: We need it.

Michael Kimsal: Well, where there's such a large contingent of people using IE 8, for example, and using that for the next seven or eight years that these continue to be necessary.

Manuel Lemos: Right.  In my opinion if I really had an application that could use WebSockets I'd rather have it disabled whatever feature it relies on for browsers that do not support WebSockets, at least not to have to invest on emulation layers that try to do something that is fantastic but in the end it's just, because underlying browsers, is limited.  But I don't know, probably these guys had a different motivation to implement those emulation layers, I think.

Michael Kimsal: I don't know, yeah, maybe.

Single Page Apps with Pagify (18:53)

Manuel Lemos: Moving on, another interesting library that I learned about is named Pagify, actually a jQuery plugin, that it's meant to create single page applications.

Well, for those that are not familiar with what are single page applications, you can take for example the Twitter Web Client which is basically AJAX based user interface that updates different sections of the page without you having to reload it, but you can go back and forth to let's say virtual pages that have different URL's and what changes is the hash value that appears in URL.

And this library from what I understood also manages dealing with the changes because when the user changes to another page, probably following a link, the link changes the hash of the URL.

But if the user goes back the JavaScript that is in the page, because the page won't be reloaded but the JavaScript that is in the page has to detect that the hash was changed and has to actually update the page just to be consistent with the action of going back, probably going back to a different screen, a different layout, different things would appear on the page.

And this Pagify plugin I think it does more than just that, if I'm not mistaken it does something which resembles MVC or maybe I'm confusing the frameworks, but I think I saw a framework that did that.

Anyway, I want to also mention related to this there is actually an object in JS Classes site named jsGET that is already ready to handle these changes in the URL, in the hash of the part of the URL.

So not only can change it to reflect some action that was not necessarily clicking on a link, but it can listen to a virtual event that would be the change of the URL hash. So when the URL hash is changed you can register a callback function that will be called when that happens so you can update your screen. So it would somehow at least part of the functionality of that Pagify jQuery plugin.

Mike, have you tried to develop these kinds of single page applications?

Michael Kimsal: Nope.  Well, nothing to this extent, I've certainly done some apps that have AJAX calls in them and get back some data and update something on the screen, but I typically still am old school, you click a link and will generally bring up a new page.

Looking specifically at the Pagify.js thing here and comparing it to what you said about one of the JS Classes classes, I'm looking here at their example demo, let me look here and see what this says.

Okay, the idea here is that they're setting a holder container and they're passing in some options and then an array of file names or URL names that get associated with the particular hash or HREF containers.

And what I noticed initially is that when I went to the demo page all of the pages were loaded so that every time I was clicking it was changing the URL, the hash part of the URL, hash options, hash about and so on, but looking at Firebug all the pages were loaded.

And you mentioned something about registering a callback, one of the things that I wonder a bit in apps like this is at least traditional analytics and traditional logging of requests in terms of trying to figure out what pages or what resources people are using on your site would necessarily be lost, that information would be lost with traditional logging mechanisms, because this just sent a request to the page, or to the server for the page about.

I might never click the about link, but as far a traditional logging system or traditional analytics app is going to be concerned, oh, this person looked at the about page.  So, I'm not advanced enough in this to understand what people are doing to address these sorts of things.

We're kind of transitioning, I see this as a transition into sort of the next phase of desktop applications, or I should say browser based applications as opposed to web pages, and I think we've been seeing that for a long time, this is not anything...

Manuel Lemos: New.

Michael Kimsal: ...necessarily groundbreaking, but I'm seeing more applications using this technique, how do they deal with analytics?  Is it all custom JavaScript logging that logs events back to something else? That's an approach but...

Manuel Lemos: Do you mean analytics in the sense of recording a request done by the users to update the statistics that you have for your own site?

Michael Kimsal: Sure, yes.  Whether it's necessarily HTTP requests or just events like, oh, this link was clicked or this div was clicked.

Manuel Lemos: Well, from what I understood if you mean Google Analytics, for instance, they have an API that you can call to record events and page changes and stuff.

Michael Kimsal: Yeah, that's one approach, personally I found it a bit cumbersome to use, and I think if I wanted to do that I might try to come with my own simpler version, but I would probably also want to log stuff to my own system, I don't particularly want all of my hardcore analytic data going to Google but that's just me, says the man with a Gmail address.

Manuel Lemos: Okay.  Well, actually the part of not just analytics but also search engine optimization, it's a bit of concern, I think it is one of the things that's been holding back people to jump to AJAX applications was the fact that search engines crawl the pages, if they just the hash or URL they would see the same page even more because most of them do not interpret, or at least fully interpret the JavaScript in the page to execute it and see if it generates different content.

But there is this convention, they call it HashBang (#!) which is a convention that I think it was Google that started it, you can notice that in Twitter URL's you can see that there is a base URL that never changes and there is the hash and then the exclamation mark, and then you see the actual URL with slashes and so that it's a hint for search engines that follow that convention to access when they want to see what content they would see if they fully interpreted the JavaScript in these AJAX based applications.

So if a search engine follows one of those URL's it maps back to the URL without the hash and exclamation mark just used in the remainder of the URL, and that is the technique that is used to optimize AJAX applications for search engines, or at least for Google and whatever are the other search engines that follow that convention.

And I think that is important and libraries like this help because you can with your own callback handlers that you can register, you can detect the changes when users use the back and forward buttons which do not lead to a new HTTP request but you have to update your screen.

And if you follow the HashBang convention for mapping your AJAX application URL's it will be very important for you to have your own site optimized for search engines and still provide the benefits for AJAX based applications to your end users. 

Michael Kimsal: Agree, yeah.  I guess in my mind there's sort of a continuum of types of sites where search engine stuff is important or not important.

Manuel Lemos: Right.

Michael Kimsal: And I do think a lot of application type things are almost by necessity something where they're behind a login, they're behind some sort of identification system such that traditional Web crawlers wouldn't be hitting them anyway.

So we're probably going to start seeing, continue to see I should say, more advanced use of HashBang URL's and other things like that to maintain state and take advantage of modern browsers without too much concern for SEO stuff, but at the same time if that's the only trick that somebody knows and the use that trick for their landing pages, for example, they're not going to get much SEO love.

Manuel Lemos: Right.  It's just to take advantage of eventually URL's that the user will share and they are based on the hash URL. If they follow this convention at least they can serve search engines the actual page that the user was seeing at that moment, and the search engines do not have to interpret any JavaScript.

Anyway, this is just to notice that there is now more and more this trend of single page sites or applications, often they are just dashboards that show different aspects of an application just as if you have opened a window in a desktop application, and since it provides a better user experience I think it is a trend that will continue to become more significant I think.

Michael Kimsal: Hmm-mm.

PhoneGap to become an Apache project (31:07)

Manuel Lemos: Okay, moving on with the podcast, Michael, I recall that you wanted to talk about something about PhoneGap.

Michael Kimsal: Sure, PhoneGap.  Well, this is an announcement that I saw a couple of days ago that there was an announcement from somebody on the PhoneGap team that they were going to plan to submit PhoneGap, to contribute PhoneGap, to the Apache Software Foundation.  Now, I'm waiting for a confirmation to see that it actually has happened.

Manuel Lemos: I think it's a process that takes some time to be approved.

Michael Kimsal: Yes, it's not going to just happen overnight, but I haven't seen much beyond the initial mention in the mailing list, and then some other articles written about that post.  But to me it really signifies, assuming that the Apache Foundation accepts it, would signify a very strong future for PhoneGap as a technology.  It's one of those things where with almost anything if people say, gosh, that's kind of neat but is it going to be around six months from now.

Manuel Lemos: Yeah.

Michael Kimsal: Most things that go through the Apache vetting process become a first class Apache citizen are going to be with us for a long time.

Manuel Lemos: Well, at least we hope, although it's not guaranteed.

Michael Kimsal: Oh, certainly it's not guaranteed but more likely they're going to have resources at their disposal, it will have proven itself from a technical and I think from an organizational standpoint, too, the Apache group themselves are not going to bring into their fold a group of people contributing that don't themselves indicate some level of dedication and structure and organization.

So I think if they make it through that vetting process it'll be an interesting twist, certainly there hasn't been a lot in the Apache ecosystem that speaks to mobile development or that speaks to JavaScript development all that much, so having PhoneGap be part of the Apache Software Foundation it feels, assuming it happens, it will feel like an interesting evolution in both the Apache Foundation and the mobile web ecosystem, to me anyway.

Manuel Lemos: Right.  Well, from what I understood from the Apache community process, I'm not sure if that's the exact name, if they approve a project to be included in their umbrella it basically means they are confident the project has strength to move on based on the efforts of its community, so it's never a small project because it would not have enough developers or users to support it, but I think PhoneGap will not have any difficulties to be approved.

Michael Kimsal: It does also seem that they're having to consider changing their name from PhoneGap to something else, and that would be one of those... I don't think it would hurt adoption of it long term, but if it's project X now and then it gets its name changed under the Apache situation then there may be a period where people are saying what happened to this, they can't remember the name.

I'm seeing veiled references to The Gap Clothing Company and I don't understand if that's really an issue where The Gap company was saying you can't use PhoneGap, so, trademarks and service marks and all that, what a weird world.

Manuel Lemos: Patents, if you look at it there are patents in the way. If you look into it there are patents in the say.

Michael Kimsal: Goodness.

PhoneGap build service (35:24)

Manuel Lemos: You also mentioned something about a build service.

Michael Kimsal: Well, yeah, that's another thing that I just saw yesterday that the PhoneGap project has a build service located at, looks like, and the idea there is that you would upload your JavaScript, CSS and HTML application, upload all the assets to that, and their build process would give you back iPhone and Android and Blackberry and other sorts of mobile versions, native app versions of your HTML, CSS and JavaScript.

And apparently if you want to do it for the iPhone you'd have to be part of the iPhone development program, have to upload your certificates or something like that.

Manuel Lemos: Oh, that's true.

Michael Kimsal: Yeah.  So it's not going to be a way for people to make native iPhone apps without having a Mac, without being part of the Apple developer program anyway.

Manuel Lemos: Oh, I see.  It's a clever move, right?

Michael Kimsal: Yeah.  Similar in some ways to Titanium in that you still need that, you still your SDK's, you still need your certificates and things like that.  But I wanted to try it today and I didn't get a chance to, I have a game that I was starting to work on that I wanted to upload to that, but it's not far enough along for me to try it yet.  If I get it done in the next couple months, ha, ha, ha, I would report on whether I actually got that to work or not.

Manuel Lemos: Okay.

Michael Kimsal: But I'll throw this out, if anybody happens to want to work on this with me you can email me, Michael at, this is a Russia reference.  Over in Russia, and I don't know if you saw the pictures or not on my Picasa page, but my brother and I went to the Soviet Era Arcade Museum, and it's a museum, it's an old warehouse, a small warehouse.

Manuel Lemos: I saw some pictures but I do not recall seeing that, did you post it recently?

Michael Kimsal: Last week, I posted the pictures last week.

Manuel Lemos:  Maybe I skipped it or I didn't understand what it was.

Michael Kimsal: Well, there are some movie pictures or some movies of it too.  These are arcade games, some video games, some are really just a gun shooting at targets sort of stuff, but arcade games in the truest sense from the mid-70's, probably the mid to late 80's, and it was really, really interesting to me to play some of these.

And there was one game in particular called Gorodki and apparently it's an actual physical game, sort of a sports game, kind of like bowling or skittles or something, but it was a very, very simple video game and I was looking at it and saying somebody should make this as an iPhone game, somebody should make this.

I found a web version where you can play it and it looks like they just took the ROMS from the machine and got them into a web system somehow, but it strikes me as a simple enough yet addictive enough game that I was starting to play around with some JavaScript and see if I could make that happen and then perhaps convert it via PhoneGap into an iPhone game, but alas I'm not that good, I'm not that far enough along yet.

But if anybody would actually like to work on that game with me I would be... I'm interested in talking with you.  I may not have time for a while but shoot me an email or if you actually have, if somebody actually has the game already as an iPhone game, maybe just under a different name, let me know because I will buy it.

Manuel Lemos: Well, we talked a lot about PhoneGap but I think it's a very well known project, but for those that are listening and are not familiar with it it's basically I will say should I call it a framework that allows you to write mobile phone applications just using some HTML, JavaScript and CSS. So that's why it is related with this podcast because it talks a lot about related topics, but for those not familiar it could be weird.

But it looks interesting, also along the Titanium apps that were also mentioned it's good to see this project is moving and making... providing more opportunities to JavaScript developers.

Michael Kimsal: Yeah, definitely.

Top JavaScript Developers in Every Country (40:21)

Manuel Lemos: Okay, but moving on with our podcast now we are reaching closer to the end.  Now I will introduce the regular section on the latest JavaScript objects published in the JS Classes site.

But first I would like to mention a new feature that was recently introduced not only in JS Classes site but also in PHP Classes site because they share the same code base, which is basically a feature that allows to highlight which are top developers that are contributing to the site.

That feature existed practically since the beginning of the site, basically everyday the site computes a ranking of authors of the site based on the number of users, distinct users, that have downloaded their packages from the site.

This only applies of course packages that require the user to be logged to download because that's the way the site keeps track of who has downloaded what.

And the site everyday builds some rankings of the site's top authors.  There is one global ranking for all time and there is also another ranking just for the last week, so the authors that have just submitted their packages recently can see already them rising to the top of this chart.

But what's new this time is that there is now a couple of additional rankings which are also for all time and for the last week, but they are restricted to each country of the actual author that has submitted the packages.

So if you are from a certain country, let's say Michael submitted a package and he's from the United States, there will be rankings for the authors of the United States that show how high is Michael ranking.

Michael Kimsal: I'm number one.

Manuel Lemos: Sort of like that.  Basically if you have many users downloading recently your packages you feature in the week rank and it will be easier to rank just considering the users of your own country because there are less users that are authors to consider.

And this is yet another feature that was meant to encourage authors to submit their packages because they get more evidence. Their work shows more every time they submit a package and it becomes highly ranked. And with these national ranks it is easier to see yourself rise in the ranks,.

And I hope this encourages authors to submit more packages so they can see themselves rising and somehow it provides some satisfaction for the hard work they have shared with many other users.

Latest Objects published in the JSClasses site (44:02)

Manuel Lemos: But moving on actually with the section on which we talk about the latest objects published in the JS Classes site, Michael which objects would you like to highlight this month?

Michael Kimsal: Well, speaking of users who have contributed packages and shared, we're back with Arturs Sosins, good morning Arturs, who's actually contributed a number of things this month, but two, well one of his I'd like to talk about which stands out to me is the Canvas Turtle.

And it stands out to me a little bit because it takes me back to Logo, the idea of a turtle as a little object on the screen and you give it commands.  Now, it wasn't the very first programming that I ever did, but I did some Logo programming as a very young child and it was kind of...

I was already doing other stuff in Basic which allowed me to be more expressive, but Logo did help get some ideas about how to move stuff out, move stuff around, rotating and turning and kind of thinking sort of like a video game, I'm here, I'm going to turn left, going to turn right, and it looks like what Arturs has done is recreated the idea of the turtle commands and placed them on a JavaScript canvas so you can issue those in commands and get the same... get similar results.

It's an interesting. For me it's very nostalgic and a bit of a throwback because I haven't actually played with Logo in probably 30 years.

Manuel Lemos: Yeah.  Well, I think that is quite nice.  Just to make clear when you say commands it's basically, well, some commands are more in control of logic and other commands are mostly drawing graphics, that's why it is related with Canvas.

Michael Kimsal: Yeah.  There's actually a lot of good documentation that Arturs has provided here, so you'd say draw 50 and you'll draw 50 pixels, you'll go forward 50 pixels, then you turn right 90 degrees and then you drew another 50 pixels and you keep doing that and you'll draw a box, for example.

Manuel Lemos: Yeah.  What is interesting is that basically this language of commands becomes interpreted and so you can write a small program which is a bunch of commands written as text and you can execute that program and see what it produces on screen.

And I think it is in early days of introducing this logo like languages, let people learn about programming.  And in this case it is interesting because Arturs implemented an interpreter, and it could be interesting for those that would like to study his code to learn how to develop interpreters of commands for any purpose not just necessarily for drawing graphics.

Michael Kimsal: Sure.

Manuel Lemos: Okay, other than that you also wanted to comment on another?

Michael Kimsal: Well, Daniel Carrero from Chile has put together... when I first saw it I actually misread it the first time I saw it, and I thought this is jQuery Marquee Title, and I thought it was just another jQuery Marquee, just another Marquee effect, and in some ways it is but as soon as I clicked the live example I went, oh, okay!

Manuel Lemos: It's not what you thought.

Michael Kimsal: It's not what I thought, it's just it's doing a marquee effect, a text scrolling effect just on the title in the browser.

Manuel Lemos: The page.

Michael Kimsal: Yeah, the page title.  But what's interesting is that this is an animation of the title, but as a side effect because I don't think I've ever seen this done, or if I have it's been a long time, it's in the tabs as well too, so it was actually very interesting just to see that happening.

Now, unfortunately I was thinking this might be a good thing to use for notification, it doesn't look like... oh, no, it does.  In Chrome the title in the tab will continue to animate, now in Firefox it doesn't but it does in Chrome, so that would be an interesting way of giving some notification to somebody even if they're not on that page, but if they see the tab there that, hey, it's changing, something's going on.

Manuel Lemos: Yeah, it will give a distinct feature to your site pages because this is not a normal thing, and a site that uses that will probably get the attention of the user making a title rotate on the page.

Michael Kimsal: Sure.  Now, how about you?

Manuel Lemos: Well, actually I have also considered a couple of interesting classes, one also from Arturs who is practically dominating the site. He is number one not only in Latvia but also in the worldwide ranking.

And one of the classes that I wanted to comment about is this Glint effect which basically an effect of showing a sort of lightening on top of a page element, but it sort of shifts either horizontally or vertically, it's an option.

And although it's not exactly new this type of thing, it always gives a distinct aspect to the pages that use these effects, and it's all done in JavaScript, there is no Flash necessary to implement these things.

And in this case he also uses a Canvas tool to render the lightening image that shifts on top of the page element, and then he shifts the position to give the sensation of having something, a light, animated on top of these page elements.

Michael Kimsal: Sure.

Manuel Lemos: And it certainly looks cool, and that was one of the objects that I wanted to mention.

And another object that I also wanted to mention, not by coincidence is another object by Arturs Sosins, that basically it implements... it's called Pop Under but in practice it displays a sort of interstitial advertising.

Usually this is called advertising but it could be for other purposes, basically an intermediate screen that shows on a page when you visit that page, and it goes away after a few seconds, so it's just to bring attention to something that happens on the site, it could be advertising or not.

And these kinds of components are useful for people that want to enhance their sites, bringing the attention of the user for something that is relevant.

Upcoming articles in the JSMag magazine (52:11)

Manuel Lemos: Well, basically about JavaScript objects we have covered a few of the most interesting that are published recently, and this month I sort of switched the award, we usually talk about the latest articles that are being published in the JsMag Magazine.

Michael, I don't know if you have anything ready to comment about this month.

Michael Kimsal: Well, yeah, a couple of things, actually I'm looking here right now at our upcoming list, we actually had a lot that were on hold this month due to some people had some life situations.

But we've got a piece on CSS color formats, how to modify those with JavaScript, Dino Gambone is continuing his JavaScript game development series, and actually it looks like there's one more, no, no, no, that's right.  This is a new author for us, Daniel Gita, I hope I'm saying the name right, has a piece on doing blur effects in JavaScript.

So those are... I think there's maybe one more but those are the major ones. We've had a couple that were going to be this month but due to scheduling we're having to push them back to next month.

Actually, one very, very brief comment because we're always looking for new authors to publish or continuing authors, you can email me, Michael at and we can take it from there if you have any questions.

Typically, and this has only been an issue once but I'll bring it up because somebody said hey I've got this piece, I want to do it, and English is not their first language.  Now, we've had other people in the past where English is not their first language and through our editors we've been able to tweak a few things here and there.

We had an issue this time where the translation and our ability to translate was not up to speed, so we're having to take a lot more time on that one, but other than that like out of the last two years we've been doing this we've had that happen one time so it certainly is an issue.

And having been in Russia for the last ten days I certainly understand not being able to speak like a native.  I felt like a two year old sometimes because in my head I'm an intelligent person with cogent thoughts, I couldn't communicate those to anybody in writing or in speech or anything, I felt very helpless at times.

So I've been in your shoes, I understand what it's like to not know all the phrases and how best to say things, we'll still work with you as best we can, so Michael at if you want to contribute something, if you want to talk about an article and we'll take it from there.

Manuel Lemos: Yeah, and you pay for your contributions.

Michael Kimsal: We do pay.

Manuel Lemos: As always.

Michael Kimsal: Yes.

Conclusion (55:20)

Manuel Lemos: Well, okay, it has been yet another great show of the Lately in JavaScript podcast. On my part that's all for now and I hope to see you back next month, bye.

Michael Kimsal: Yeah, I will see you next month as well, thank you very much, Manuel.

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

26,081 JavaScript developers registered to the JS Classes site.
Be One of Us!

Login Immediately with your account on:


No comments were submitted yet.


1. What are the advantages of AJAX apps hosted in a single HTML page? (2011-10-05 21:23)
The challenge of single page apps is more on the usability matters...

  Blog JS Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Single Page Apps Tren...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (1)