Speed up JavaScript using HTML5 LocalStorage - Lately in JavaScript podcast episode 27

Recommend this page to a friend!
  Blog JS Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Speed up JavaScript u...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)  


Categories: Lately in JavaScript podcast, JavaScript performance, JavaScript APIs, JavaScript opinions, JavaScript Innovation Award

JavaScript can load faster if HTML5 LocalStorage is used to cache the scripts on the browser side. This was one of the main topics discussed by Manuel Lemos and Arturs Sosins in the episode 27 of the Lately in JavaScript podcast.

They also talked a new library to evaluate JavaScript code complexity, PhoneGap 2.3 improvements, the use of the strict mode in production JavaScript code, using advanced HTML5 and JavaScript based animations to get the attention of site users, the first edition of the JavaScript Programming Innovation Award.

Listen to the podcast audio, watch the video or read the transcript now to learn more about these interesting JavaScript topics.

Loaded Article


Listen or download the podcast, RSS feed

Watch the podcast video

Read the podcast transcript

Click on the Play button to listen now.

Download Size: 23MB Listeners: 1815

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

View Podcast in iTunes

RSS 2.0 feed compliant with iTunes:


Watch the podcast video

Note that the timestamps below in the transcript may not match the same positions in the video because they were based on the audio timestamps and the audio was compacted to truncate silence periods.

Show notes

Read the podcast transcript


Introduction (00:20)

Evaluating the Complexity of your JavaScript (2:00)

PhoneGap 2.3 with improved Windows Phone 8 Support (6:29)

Using Local Storage to cache JavaScript (11:30)

Should we "use strict" JavaScript in production? (14:12)

Using Advanced Animations to get the attention of the users (18:01)

JavaScript Innovation Award Announcement (29:07)

Latest JavaScript Objects Published on the JSClasses site (34:01)

Contribute Articles to the JSMag Magazine (41:51)

Upcoming System of Points and Privileges (46:22)

Conclusion (50:46)

Introduction (00:20)


Manuel Lemos: Hello, welcome to the Lately in JavaScript podcast. This is Episode 27 and as usual I have here with me... oh, wait, it's not Michael Kimsal.


Arturs Sosins: I'm just replacing him.

Manuel Lemos: Yes. This time we have here Arturs Sosins that, fortunately, was able to accept an invitation to fill in for Michael Kimsal that usually is my co-host, but this time he is very busy with his work and could not make it.

Well, Michael, if you are seeing this, we miss you. I hope to get you back on the next episode, but now back to our guest this time. Arturs, how are you doing?

Arturs Sosins: Hello, I'm fine thank you. I will try to -- it's hard to replace something irreplaceable, but, well, I will try to do my best.

Manuel Lemos: Yes, I think everybody will have a hard time trying to imitate Michael doing his foreign language stunt.[Laughter].

Arturs Sosins: Oh, you need a special skill for that.

Manuel Lemos: Yes, you need to use Google Translate.


Manuel Lemos: Well, now back to our podcast. This time we have yet another interesting show. We have several interesting topics to comment about and some news at the end.

We're going to comment about the latest happenings specifically in the JS Classes site and the Innovation Award that just started. But, well, we'll get back to that ahead when we get closer to the end.

Evaluating the Complexity of your JavaScript (2:00)

Manuel Lemos: So we're going to start talking about a tool that I think it can be interesting. Let me try to screen share here.

It is a tool for evaluating the complexity of JavaScript projects. And it basically lets you paste the code of some JavaScript file that you have and then you can analyze it and it will give some results.

Well, I'm not sure what these numbers mean, but I think if we...

Arturs Sosins: I can try to explain some of them maybe.

Manuel Lemos: Well, I know what they mean, but what they could be useful for. I think it shows the number of lines of codes and those that actually contain code. 

Arturs Sosins: I see.

Manuel Lemos: They exclude the white spaces in the comments. And then there are some numbers here that I'm not sure what you can take from them like Maintainability Index, Aggregate Cyclomatic Complexity.

Arturs Sosins: Maintainability Index is actually something that shows how maintainable your code is and the highest mark you can get is 171, I guess. So you did pretty well, actually.

I have tried many of my classes also and they also got about 100 Maintainability Index. So I guess it must be pretty normal for OOP approach.

Yes. And Aggregate Cyclomatic Complexity, well, usually it's set if it's higher than 10, then you just split your code in more different modules. So it's too complex.

Manuel Lemos: Oh, I see. I see. So is this something that you study in Computer Science these days?

Arturs Sosins: Yes. Yes, it's also something that's different metrics that were discovered and used in measuring the performance and efficiency of the code.

Manuel Lemos: Yeah. Well, that is interesting. I wasn't aware about the meaning of the actual values. I could guess the meaning of the metrics, but looking at the numbers themselves it did not mean much to me.

Then for specific functions, there are also I have here Halstead difficulty, volume, effort. Do you know what this mean?

Arturs Sosins: Yes, I've heard of Halstead metrics but I can't comment on it much.

Manuel Lemos: [Chuckles] Me neither. I stopped going to school many, many years ago.

Well, OK, this is interesting. I think whoever is concerned about the problems of having complex code in your applications could take a look. Now, I have just learned from you that I need to split my code probably into more modules. They probably evaluate the length and the number of its functions that you have there or scopes or cycles or whatever.

Arturs Sosins: All cycles, yes. They are like representing that is a full graph of how your program may be ran then they count cycles in it, something like that.

Manuel Lemos: Well, I'm not really convinced that I need to speak to that specific code in many parts, but we'll go and figure maybe for a future project.

Arturs Sosins: Usually, it's really language dependent.

Manuel Lemos: Yeah.

Arturs Sosins: In JavaScript maybe you need some other values.

Manuel Lemos: Yes, but what I meant is that, for instance, in the case of these components something that I usually share with other people and since this is to run on the browser side, I try to avoid putting too many files because it starts making it more complex for less... 

Yes, also the number or requests. But for less experienced users, they look at this and start missing that they need to include more files. And if they are missing a file, they may not be paying attention to the actual error in the browser that says that the file is missing. But that's just a criteria that I have for this. Different people may have other criteria.

PhoneGap 2.3 with improved Windows Phone 8 Support (6:29)

Manuel Lemos: Now, moving on to the next topic, we are going to comment here about an article that, well, it's not exactly recent - it's almost of one month ago - but since we do this and got one month at a time, we try to review the whole month the best. So let me screen share here.

OK, basically, it's the announcement of PhoneGap 2.3.0 that was released in early January. And basically, one of the most important features is the full support Windows Phone 8 and there are some other things.

Well, personally, actually I did not try PhoneGap in practice, but I really want to try it because it's one solution how to develop mobile applications that can run on multiple devices and you only have one JavaScript code base.

Arturs, do you have any experience with PhoneGap that you would like to comment specifically about this release as well?

Arturs Sosins: Well, basically, I'm now trying to concentrate more on the mobile games, trying to produce my own. I've been using some mobile frameworks across platform. Yes. And I have tried PhoneGap also before.

But what's interesting is that the framework I'm using, Gideros Mobile, is not currently supporting Windows Phone 8, so I checked the Windows Phone 8 SDK, says that they are supporting JavaScript because they provide their own library with JavaScript API for phone SDK.

So I think that the major point that PhoneGap is now supporting Windows Phone 8 is that they all are under the same API like PhoneGap used and that's something that Microsoft guys could use. But, well, as I said, that's not something new because you could write your own Windows Phone 8 applications with Windows JS Library.

Manuel Lemos: Yeah, that's true. Well, I was just wondering if it would not be easier to maintain if you have only one code base for all different platforms and what would be the downsides of that.

I always heard that you lose something because you do not take advantage of a specific platform things well when you use PhoneGap but I don't know that from first-hand experience. I did not try it. What is your experience? Have you tried it lately or?

Arturs Sosins: No, no. I have tried it a long time ago, but as I said, I'm also concentrating on games and especially that are based in physics, so that in browser that Web apps that are produced are not a good solution for physics-based games.

They are just too slow for that. So I need something more native and that's when I tried PhoneGap and haven't used it at all. Maybe if you are producing apps not games, but apps like it's a specific user interface, then maybe it's much more usable.

Manuel Lemos: Yeah, well, what I meant is not exactly to do browser-based, but using PhoneGap. It's not exactly the same as browser-based, right?

Arturs Sosins: Well, probably not exactly but that's...

Manuel Lemos: The performance is still affected?

Arturs Sosins: Well, at least when I was trying it I remember I was drawing all the same things that I used in JavaScript in Canvas, so their basis was the same. If you are using user interface for mobile, maybe that is more native, yes, but at least for what you need for games, that was basically the same that you would run in a browser.

Manuel Lemos: Right. And did you also try Titanium?

Arturs Sosins: Oh, yeah. I have worked with Titanium. Again, that was a framework mostly for apps, and I don't know if you have heard but they are creating their own engine from a former Corona engineer who designed the Corona framework and now it will be called, I guess, Lanica Platino, or something like that. So there will be a specific game engine for Titanium.

Manuel Lemos: So you expect it to be actually faster and more feasible for games and things that demand more speed, right?

Arturs Sosins: Well, then Titanium now is that, yes, that's certainly.

Manuel Lemos: Well, maybe we should call somebody that is more inside of those things because from what I've heard, PhoneGap also advanced a lot in the latest times but I cannot speak from my experience.

Using Local Storage to cache JavaScript (11:30)

Manuel Lemos: Now, we are going to move on to another topic on which we're going to comment about an article by Addy Osmani on which he is telling about a technique that he's using to cache JavaScript using local storage to store the actual scripts on the browser side without the overhead to fetch the scripts again on the next access they are needed.

This is an interesting approach. I have not thought much about it. Arturs, did you look into this article? What do you think about this technique?

Arturs Sosins: Yeah. Well, what the author discussed is that somewhere, I guess, in 2011, search engines - main search engines - like Google and Bing already experimented with this technique and it seems that they get a good result. And this project is just to experiment how good it is to cache all scripts and roll them from local storage.

They are also describing why they choose local storage specifically and not, for example, File API or IndexDB because for now, those implementations are much slower than this. And so, they are still experimenting and trying to understand what would be a feasible solution, especially for mobile phones, for example.

Manuel Lemos: Yeah, this seems to be very interesting now that JavaScript Libraries are getting larger and larger. We talked about in the past episodes about jQuery trying to ditch the older browser support, so they can have a different, actually, smaller implementation of jQuery API that has less code.

Well, if code size is a problem, actually, this solution to store in the browser, in the local storage could be an idea, especially for libraries that tend to take more space in terms of being spread over multiple files because each file would be a request to the server and if they get it from local storage, that overhead will be practically suppressed. It seems to be a really interesting idea to be explored.

Should we "use strict" JavaScript in production? (14:12)

Manuel Lemos: Now, moving on to the next topic, I'm just scrolling it here. I'm trying to screen share another article this time by Michael Matthews on which he comments about the use of the "use strict" pragma which was introducing EcmaScript 5, which is practically the base of all current browser implementations of JavaScript.

And this pragma, which you can use it in different ways, you can actually activate the strict mode. Arturs, did you look into this article? What were the main conclusions that you took from it?

Arturs Sosins: Yeah. Well, basically, using any of both modes may have its own advantages and disadvantages.

If you are using strict mode, well, you might have a better testing. You can catch some errors that you got in your code that may later lead to some bugs, but they also throw exceptions usually on some errors that, well, could not cause any bugs and you don't want to, for example, to throw exceptions in the end user when your code is already in deployment.

And they also talk about that, for example, running strict mode may make your code run faster.

Manuel Lemos: Slow you mean.

Arturs Sosins: No, exactly faster because I also saw that it will be slower because you need to check some things more, but it's...

Manuel Lemos: Oh, right. Running in non-strict mode might be slower.

Arturs Sosins: Yeah.

Manuel Lemos: I was reading it the other way around.


Arturs Sosins: And they're explaining that strict mode fixes mistakes that can make JavaScript engine difficult to optimize the codes. So if you're using the strict mode, it could optimize the code better - much better.

Manuel Lemos: All right.

Arturs Sosins: Yeah, but also, there is one section that describes that basically, your codes may run differently on strict or non-strict modes.

So if you, for example, want to enable strict mode in development and then when you deploy code you want to disable the strict mode, your code may run differently. Basically, it's mostly used on function context that you might have different context. So you need to be very careful with it.

Manuel Lemos: Yes. Well, personally, I have been using a lot more recently the tools like JSHint and JSLint, and one of the complaints is that you do not specify the use of the strict mode.

And I tend to disable it because, actually, I was concerned that the code might not run the same way on the server side.

Well, it seemed that this is actually suggesting that using strict mode is actually a good idea and it's better if you are going to use it in development environment you also use in production because there might be differences, right?

Arturs Sosins: Yes.

Manuel Lemos: So basically, it is advising to use a strict mode. I think it is interesting. I'm going to consider using it more in my projects. And I just need to study a bit more about on these differences, what they can affect my code in practice, and I recommend other people to do the same.

Using Advanced Animations to get the attention of the users (18:01)

Now, moving on to our next topic. I would like to comment, actually, about an article that I wrote some time ago, not many days ago, actually, it was this week.

And this week that we are recording because when this podcast will be live, published on the JS Classes site, it will take us still a few days for the people to transcribe it and that's when it will be published but when I say this week, it was in the last week of January.

And this article specifically I wrote because I developed a package for implementing animations that I've been using them in the pages that were added for the system of levels and missions that the users in the PHP Classes and JS Classes site go through.

These pages present a lot of information, a lot of pathways for the user to go next. It may be hard for the user to feel what is the most important thing that you need to do, about something that he accomplished or it may be things like suggestions or hints on where he needs to go next.

And specifically, on the system of levels and missions that were implemented, this was very important.

Let me see if I can show you what I would see. Wait, I need to log in because I was not logged here. Don't read my password. Well, you've seen it all. You just know that has many characters.

I think you can see it now. You can see several animations that a lot of these new animations that I implemented were displayed here.

You've seen some fade effects which are very basic, many sites use them. You saw a progress bar being animated showing you the level that it is up to now. And the animation gets the attention of the user to the actual message that is being passed.

And the message is that I've done 66% of the current level and I have one mission to go. And then, there is a message that do not give much emphasis because if you give emphasis to everything on screen, it will still be too confusing for the user.

And the actual message that I wanted to give more emphasis is this one about the next mission that it is drawn a sort of an incomplete circle, actually, an ellipse that shows the next mission is to do something, in this case to publishing innovative class.

Then there is this button or link that I can click and it shows more details about the mission. As you may have noticed, the actual screen, I mean, the page scrolled a bit because it is showing a new page element that was not completely visible.

And there is also an animation effects for that, to make visible as much as possible a page element that you give its idea and that it figures how much it needs to scroll the screen.

Again, it showed another circle around a link on which you can get more details about this mission. I can click on the link there and, again, it uses some animations. There is some information about the briefing. And what is important is to tell the user, "Oh, read this briefing to the end."

And if the user is paying attention to this message, and I hope so because that was the idea behind giving emphasis to these messages, you'll go there and eventually reads this and then continues to the page.

I can get back to the actual page again that it was before and this time, I'm going to click on this link which is something different that shows how much I have done so far.

It expands a section and automatically, it scrolls the page to make the section as much visible as possible. And, well, and so on.

The idea here is not to show the actual system of levels and missions, just to show how it was used as it is described in this article.

Well, the article is not a small one. It tells us many things about making well-thought user interfaces which admittedly is something that JS Classes and PHP Classes site need still to improve on, specifically on package pages.

But in this case, it was a new section of the site that was implemented using these animations. There were some time dedicated to this work.

Arturs, did you read this article? What did you think about it? Did you take any important lessons useful for you or it could be useful for others as well?

Arturs Sosins: Actually, yes, I read the article. I've even seen that in action before, before you've shown it. And, actually, that is something that I and designers have been working with you.

We're really, really serious about it. For example, designers were not only trying to emphasize some texts but also try to implement this inside the web site design, therefore, I have published some classes like spotlight or water drop, the exact effects that gives focus on different items or texts. So that is something that I was taking really seriously even before, yes.

Manuel Lemos: Yes. That's right. I remember you sent many, actually, very cool objects, classes, whatever is more accurate to call them, that performs some very impressive animation effects And this helps to get the attention of the users toward the things that's really matter and that was the purpose.

The actual effects, well, you may have some effects more fancy than others, but what matters is getting the attention of the users because if the users pay attention to the important messages, they will engage more and the user interfaces will be more efficient. And that's the hope that we can get from here.

Well, I personally, I think I should continue to implement more animations like this because if you show the same animations over and over again to the user, he gets used to them and stops paying attention, so the attention is lost.

Well, at least to vary bit, alternate some animations. But, well, the idea was just that to share some knowledge, some experience that I get with this development. And actually, I was very happy with the results. We have seen a lot.

I don't know if I can show it here a lot of engagements, especially in PHP Classes site, that is more popular, has more authors to target. Let me see if I can show some information. Currently, it's not very obvious the way it is displayed, but just to show how many users are engaging on these missions.

I think I need to screen share it here first so people can see it in the page. Where is it? Screen share, here we go, OK. This is the status page on the PHP Classes site. And if I go here in class author, I can see the missions that I have accomplished and I also can see how many other users have completed the same mission.

So, for instance, this first mission which is very trivial, it's just to start engaging the users, it has 294 users that engage on this mission from a universe of 3,000.

It's like 10%, almost getting there. And this first level is very easy. It's just many users just accomplished it just to see what happens. So they will not actually engage, so we need to see how many users have engaged on the next level.

And the next level, here she is, it shows that 30 users have completed this level. It's much less, but still a lot because here you are required to do more things. For instance, the mission to publish one package, it was completed by 69 users.

There are many more users that have completed this mission in practice, but they did not engage in this system of levels and missions yet. I hope with time that you'll get engaged more on this.

And the advantage is mostly for the authors that participate in this initiative because they will learn a lot. Accomplishing these missions, they will learn a lot about the things that they could do to get more exposure to their packages.

Arturs Sosins: That's why I'm already level 5 author.

Manuel Lemos: I'm very proud about it. Well, now that in JS Classes there is the Innovation Award, I think you probably stopped there before because you could not move on to the next level.

Arturs Sosins: Oh, I will. I will.


Manuel Lemos: And you're already behind because this month of January, we started the Innovation Awards and we already have the first nominees, and that is precisely the next topic that I'm going to talk about. Let me get the screen share here. I actually announced it.  But we talked most about it before.

JavaScript Innovation Award Announcement (29:07)

Manuel Lemos: There is this announcement article telling a bit about the award, why it is important, and also the aspects that the award itself presents in the sense of motivating people to send more packages and more innovative solutions instead of sending solutions to solve the same problems over and over again for which there is not much more need to provide more classes because there are several other classes that probably do the same things.

And this article explains it a bit, how it works for those that were not familiar because this is something that goes on in the PHP Classes site since 2004.

And it also mentions that there are some prizes provided by sponsors, specifically. For now, we just have three sponsors but I'm still working to finish some contacts with other sponsors to invite them in.

For now, we have Packt Publishing that is giving away one book of choice. There is also WebDev Publishing which is actually the company of Michael Kimsal that will give away a subscription of the JSMag.

And there is also O'Reilly that has been also a great supporter since the beginning and it will provide a book of choice for you to download and read. hey also have been kind enough over the years to provide books for reviewing. The review sections are not very active these days because it's not the main focus of this site, but it is always great that O'Reilly supported us.

And, well, the award was preceded by a challenge actually proposed by Arturs Sosins, our guest, that it was actually a great idea that you proposed last year to have a sort of a challenge to reach a certain number of packages before we start launching the Innovation Award. And the challenge would give a prize to the first five winners that would get a nice elephant.

Well, the elephant is a mascot of PHP. Unfortunately, we do not have yet a mascot for the JavaScript. Maybe we have one in the future and probably just like we'll also give a bit away. Well, we have to wait and see if maybe somebody comes up with a nice mascot for JavaScript.

But just now, just to mention again the winners of this challenge were Dixan Santiesteban, Arturs Sosins, here, MarPlo is a nickname of another great contributor, Mark Rolich, and Martin Barker.

The prizes will be sent starting next week. Actually, I was waiting a bit because I think Martin did not get the message to send his address so I can send him his prize. Martin, if you are listening, please contact us as soon as possible so I can send you the prize.

And, well, I just wanted to first, for now, I'll just ask you Arturs, how do you see this award, the challenge and the award coming? What were your impressions of how this worked?

Arturs Sosins: Well, I guess that the first wave was the most awesome when it was just proposed and implemented it and then there was this huge, the first wave, that many authors are submitting something. Then it was scaled down a little bit, but still it reached the goal I think faster than I anticipated.

Manuel Lemos: Yeah.

Arturs Sosins: And actually, that was a cool date because it was I think in December, so the Innovation Award could start with New Year. So that was just awesome.

Manuel Lemos: Yeah. Actually, I think it reached the goal in December 22 or 21, so it was not the end of the world, it was quite opposite. Well, it seems this is still motivating and there will be other things that will give additional motivation to the authors to continue to contribute, and I'll talk a bit more about that ahead.

Latest JavaScript Objects Published on the JSClasses site (34:01)

Manuel Lemos: Just now, moving on to one of the regular sections on which we comment about the latest classes published on the JS Classes site.

And I'm going to share the screen here and there were like I think 11 this month. It was a good volume of contributions.

Some authors sent multiple classes and that is great for them because that probably they are motivated by the system of levels and missions that there are some requirements to submit a number of packages. I hope they continue to do so regardless of the motivations.

Since this is the first month on which we already have some nominees, I, at least in the PHP Classes site, I try to avoid mentioning the nominees before the actual results come out or else some people may vote on some packages influenced by our opinions and that probably will not be fair to the others.

So this month, we can start talking about those that were not nominated probably because there are already classes already in the site to do the similar things, so they would not be considered innovative. That does not mean they are not useful.

Arturs, which ones would you like to comment this month?

Arturs Sosins: So I will comment on the first one that was Wunderground Weather API.

Manuel Lemos: Yes. Can you maybe increase the font of your...

Arturs Sosins: Yeah, sure. Is that OK?

Manuel Lemos: Well, if you can increase it up to the limit of the width of the page, that will be better. It cannot do miracles because the size of the video that is recording is still small, but, OK, you go ahead.

Arturs Sosins: So, yeah, it is a Wunderground Weather API which uses a weather API service. And basically, what this package does is that it sends a JSONP request.

Well, JSONP is something that when you create JavaScript that you place dynamically into the header or the files so it's like it goes to that web site, sends HTTP request, and receives a callback function with a name and the data that you can then work on process and display and this package does exactly that.

And we can see even a screen shot in works, so you can provide us some locations and probably you need to learn about the API itself more to know what you can do but, yeah, I guess that's you can always query not only like countries but also with the cities.

Manuel Lemos: Yes. That's supposed to retrieve weather information from Wunderground API. And the good thing is that it sends requests directly to the server of the API, not to the server of your site. So this makes the browser side application more independent of the server side.

Arturs Sosins: And it was provided by Tom Schaefer, I hope I pronounced it right, from Germany, so, yeah.

Manuel Lemos: Yeah. Yes, Tom has been sending quite a good bunch of interesting classes. I hope he continues to do so not just to JS Classes but also to PHP Classes. Some of them are, admittedly, very impressive and I hope he continues to send good classes of this level. 

And what would be the other one that you wanted to comment?

Arturs Sosins: The next one will be stpl template engine which was submitted by Jonathan Gotti from France.

Manuel Lemos: I think you can also increase that other window. You switch it to different tab. OK, that's fine.

Arturs Sosins: And basically, what it does, it replaces some of the text based on the enclosed names. I can even try to show. So here, you can see a test that was provided here. We can even look at the code, how does it really -- or you can probably can decrease the source code. If someone can see that is here is how you provide the text that can be replaced and you can use this.

Manuel Lemos: It's very small, you cannot read it. But, well, at least you can reference it for others to see later more in detail because everything is in the site. They can download and take a look closer. 

And that is interesting. On my part, I also like to comment a couple of classes. Let me find here which ones. Well, screen sharing, OK. Well, the first one I like to comment is Continuous Vertical Scroll by Stephen Chapman.

Well, this is the vertical variant of those marquee elements that they usually scroll the elements on the horizontal, but in this case, it scrolls on the vertical and it may have some use cases. It provides the usual features of you can stop scrolling now by dragging the mouse over the area that is being scrolled. 

Well, it was an interesting solution, an interesting variant, although, it's very similar to others that we already have in the site. And this one as I mentioned was by Stephen Chapman from Australia.

He started to contribute quite a good bunch of classes. I hope he continues to do so because authors tend to send a lot of classes usually classes that are above the average levels.

So I hope he continues to send more classes, actually, more classes that are innovative so we can mention them on future shows on which we will be mentioning the innovative packages.

And the other class that I wanted to mention, again, from Stephen Chapman, as I was saying, sent several good classes, one that it can create forms dynamically by adding fields and some of them get labels.

And this can be useful to build forms dynamically for some reason you could not generate them on the server side or your application is dynamic and the forms are displayed after some user interface sequence of events.

So let me just screen share something. We are not sure if this is large enough. Probably not, but you get the idea. The idea is to generate forms dynamically, so kudos for Stephen for his contributions.

And as I said, there are already some packages that were nominated to the Innovation Award and I'm not going to comment on them precisely to not influence the results. So I think we can finish this section.

Contribute Articles to the JSMag Magazine (41:51)

Manuel Lemos: Now, usually, there will be one final section that is regularly presented by Michael Kimsal on which he comments about the upcoming articles on the JSMag magazine. 

He is not here to do so. Unfortunately, he is very busy but he just told me to remind everybody that JSMag is a magazine in PDF format that you can pay for a subscription or buy individual issues.

And he is always looking for new authors that would like to contribute to the magazine. That would be a paid contribution. It would not be open source. Although you retain the rights to publish your articles in other places, you are...

Arturs Sosins: Only after a specified amount of this time.

Manuel Lemos: Yeah. And, Arturs, you have already published some articles in the magazine.

Arturs Sosins: Yeah, quite a few of them.

Manuel Lemos: Yeah. Oh, it was that experience that you find interesting and rewarding somehow other than the money that was paid.

Arturs Sosins: Yes. We really like to work though he is the editor. Actually, I am quite bad at grammar, especially English grammar, so I was pointed out many errors, grammar mistakes, but it was all good.

And so, even if you don't know English much in all these things that you can't write normally, you can still try to apply and they will work with you and the result will be just awesome and you would feel that you have accomplished something cool that you can publish.

Manuel Lemos: You also improve your English skills, right?

Arturs Sosins: Yes, yes, definitely.

Manuel Lemos: Yeah. Well, I'm not either native English speaker, but judging from the submissions that are sent to the JS Classes and PHP Classes site, practically I rewrite all the descriptions of the packages because sometimes I see there is certain difficulty of the authors to write English correctly.

Well, not being a native English speaker as well, I admit that once in a while I may make mistakes, but I can see that at least I can improve there the descriptions that they provide, not only in the aspects of grammar but also the utility of the description itself, sometimes the authors do not focus on the aspects that really matter toward the user that comes to the site and starts making big claims, "Oh, this class is very fast and this and that." And that's not what matters to the users.

I mean, they are not concerned for the classes to be fast or not. I mean, first, they want to know what they do. And if you so only mentioned that the classes are fast instead of saying what they do, it’s not going to be very useful. Well, that is my experience.

Arturs Sosins: Actually, lots of packages that were nominated for Innovation Awards, you write a small review for them and this review are actually quite descriptive and they may be something that the end users should read before using the class that they're critical.

Manuel Lemos: Yeah. Yes, that's true. That additional description is more to explain why it was nominated, and also, if you find some insight about the problem itself because sometimes certain techniques are too advanced, they are not obvious to the user that comes to the site about the value of the solution.

And I try to describe, give some insight because we are all developers, we are not reporters. If a reporter tries to describe things that are technical, he probably will miss most of the points because they do not have enough technical knowledge, but since we are developers, we can give more insight about algorithms or techniques or maybe solutions that may not be very obvious as I said.

Upcoming System of Points and Privileges (46:22)

Manuel Lemos: Well, with this, we practically ended this podcast. I just like to mention very briefly that there are some interesting developments coming up to the JS Classes and also PHP Classes that share the same code base.

And what you are going to see next is more things that will hopefully make the site more motivating to contribute not only to authors that submit classes but also other people that can do other things that in the end, help making the site better somehow.

I can give you just a brief idea. I'll be introducing a system of points and privileges that is probably very similar to what you see in other sites.

And this is something that I've been reluctant to implement since probably 2007. I talked about it a lot with Cesar Rodas, a great contributor of both PHP Classes and JS Classes site.

The greatest challenge is to make a fair system that assigns the right amount of points and the privileges are also fair. And I've been reluctant...

Arturs Sosins: Yeah. And you should also take note of some of what authors have already accomplished and how you can evaluate it.

Manuel Lemos: Yes, and there's always that challenge. Sometimes we'd like to assign value to something for which there is not a record of at least the whole information that is now necessary. 

For instance, in the early days of PHP Classes site, it did not record the date when the actual packages were approved. And if I want to keep track of when certain points were assigned for having published a certain package, that information is not there and I'll have to figure a solution.

But that is an implementation with elements. It will be my head I'd like to figure to how to sort it. This is just to give you an idea of what is coming.

Arturs Sosins: Just don't make us wait more a couple of years.

Manuel Lemos: Oh, no. No, I hope this will not take, at least this part, will not take more than one or two months because it's not complicated, this thing.

For instance, the system of levels and missions was way more complicated. It took like three months of development but there was a lot of planning before the actual implementation started.

So that said, I think it will be implemented certainly in this semester. Well, I'm kind of smiling because we never know what gets in the way.

Arturs Sosins: Yeah, that's quite optimistic.

Manuel Lemos: Yeah. Well, no, the system of points and privileges is possible to implement very quickly. What may not be fully ready is all the privileges that may be available in the system that the users benefit from. 

Well, we have some discussions more to go through about this and one thing that I wanted to mention is that all those users that have been engaging on the system of levels and missions, at least those that got higher levels, they will get an invitation to join a private mailing list on which they will be able to take part on discussions of the matters because I can implement it all by myself, but it will not be good enough if it will not address the concerns of the people that are most interested to participate.

So if you had been engaging on the system of levels and missions and reached at least some of the higher levels, you'll get an invitation if you are not already taking part of this discussion, at least.

Conclusion (50:46)

Manuel Lemos: Well, that said, basically we have ended our podcast. I would like to thank you Arturs for coming filling in for Michael.

Arturs Sosins: Sure, anytime.

Manuel Lemos: Michael, if you are listening to this, please come back.

We miss your jokes.

Arturs Sosins: Yeah, we do.

Manuel Lemos: Well, on my part, it's all for now. Bye.

Arturs Sosins: OK, bye-bye.


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

Login Immediately with your account on:


No comments were submitted yet.

  Blog JS Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Speed up JavaScript u...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)