Login   Register  
Icontem

Next Web Standards Implemented in JavaScript - Lately in JavaScript podcast episode 32 - JS Classes blog

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Blog JS Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Next Web Standards Im...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)  
<< Previous: The Latest and Upcomi...>> Next: Better Asynchronous J...

Author: Manuel Lemos

Posted on:

Categories: Lately in JavaScript podcast, JavaScript APIs, JavaScript opinions

The Extensible Web Manifesto is proposing that the next Web standards be implemented as JavaScript libraries, so sites can benefit of the standards now instead of waiting for the next generation of browsers to implement those new standards.

That was one of the main topics discussed by Manuel Lemos and Michael Kimsal in episode 32 of the Lately in JavaScript podcast.

They also talks about better form submission feedback using Ladda, rendering 3D graphics on 2D canvas without WebGL using Phoria, and controlling Web apps using speech commands.

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





Contents

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: 50MB Listeners: 1426

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

View Podcast in iTunes

RSS 2.0 feed compliant with iTunes:

http://www.jsclasses.org/blog/category/podcast/post/latest.rss

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

  • Survey to give your opinion about future site features

Read the podcast transcript

Contents

Introduction (00:20)

The Extensible Web Manifesto (1:29)

Form buttons with progress indicators using Ladda (7:36)

3D graphics for 2D canvas without WebGL using Phoria (10:17)

Control Web App with Speech commands (14:34)

JSClasses User Reputation System (18:06)

Future Features of the JSClasses site (29:12)

JavaScript Innovation Award Winners of April 2013 (48:39)

Conclusion (57:07)

Manuel Lemos: Hello. Welcome to the Lately In JavaScript podcast, hangout, whatever we prefer to call it. This is episode 32 and as always, I have here the great Michael Kimsal. Hello, Michael.

Michael Kimsal: Hello. Good morning. I hope this is actually a hangout and not just a video call. Google seems to want to change things.

Manuel Lemos: Yeah. We are celebrating the monthly changes that Google does to make things more confusing.

Michael Kimsal: Yeah, but there's a hangout toolbox and the menu at the top does say Google Hangout. A Google+ Hangout. So I think it's hangout. Wow.

Manuel Lemos: It says it's transmitting here. Let me see if I can refresh it here. It seems there is a transmission going on.

Michael Kimsal: Here we go, OK.

Manuel Lemos: Which means I have...

Michael Kimsal: Hangout.

Manuel Lemos: Yeah. Oh, it's live! Now, I'm seeing two Michaels.

Michael Kimsal: Hey, Hey, some people pay good money for that.

Manuel Lemos: [Laughter]

Manuel Lemos: Two Michaels cost at least twice as much.

Michael Kimsal: Yes.

The Extensible Web Manifesto (1:29)

Manuel Lemos: Well, now, back to the actual topics, things that had been happening in the JavaScript world, I would like to start with a topic here... if I can start screensharing here... about what is being called as the Extensible Web Manifesto.

Maybe if I can start the right window, I can see... Or then, not. Oh, I see. Which one is the right window?

Michael Kimsal: Not that one.

Manuel Lemos: Oh, I think this is one.

Michael Kimsal: It's a different one. There you go.

Manuel Lemos: That's the one. Just increasing the font.

Well, basically, what this manifesto is about, I think, I reckon that this is also a frustration for me because the W3C and whoever is participating in defining standards, define them only afterwards you can count on browsers to adapt them.

Although, there are always browsers that go ahead like, very often, Chrome that starts implementing things ahead of the definition of standard. And what is frustrating for developers like us that create sites is that we cannot count just yet on those enhancements that the standards define.

And basically, what this Extensible Web Manifesto proposes is that instead of defining the standards as something that needs to be built into the browsers, define them as things that can be implemented with JavaScript libraries in such a way that you can adopt them immediately. Just load those libraries and there you go.

And this manifesto is being promoted by a very well-known figures of the Web development world, namely Brendan Eich, the creator of JavaScript and many others that are not so well-known, but I'm sure they are important people from the W3C consortium and Mozilla and many other companies.

Michael, what did you think about this initiative? Does it make sense? Will you embrace it somehow?

Michael Kimsal: No. Well, it doesn't really matter if I embrace it. Adding my voice to that will not make much of a difference.

Manuel Lemos: It will. It will.

Michael Kimsal: No, it won't. My voice has been for a long time browser makers make the JavaScript engine replaceable so we could have people competing with JavaScript engines.

Manuel Lemos: Yeah.

Michael Kimsal: That's not going to happen. Outside of that, I actually saw this a few weeks ago and I thought it was a bit vague.

Now, I've thought about it a little bit more and I've looked at this, after my thinking. I think I get where they're going but it primarily seems to be when standards are discussed, when new features are discussed, they should be discussed in terms of... we've touching on that before... the idea of polyfills.

The idea of whatever is introduced should be something that can be replicated in existing JavaScript engines, that could then later be baked into the underlying engine as a feature.

I get it. It feels to me, like that is going to limit. And I don't think anybody saying that's the only way that stuff should be done. But it feels like if that's the primary approach that's taken, it may limit our thinking into what's possible. But I'm now speaking in abstracts, just like I think everybody else is.

Manuel Lemos: Yeah, well. I think it's basically a good initiative and we'll see if it will work in practice. Because I supposed, certain new things that can be introduced it's not just a matter of defining some JavaScript library that will wrap it and make it possible.

For instance, if you want to interface with hardware cameras and USB ports or whatever... just an abstract example, not necessarily be a realistic one... it will certainly depend on some native code implemented built in the browser, not something that you can just emulate or wrap with JavaScript. But I think many other features could be achieved that way.

And given that, I think it's a good initiative. I would just like to see what happens in practice. I don't know. Did you notice anything that already follows this initiative or maybe this is too new?

Michael Kimsal: No. I haven't. There's just a bunch of people signing this in early June. So, no, I haven't really... I don't think that there's any fall-out from this yet. It's people saying, "Hey, we all agree that this how things should happen." And there's been about 500 people that have signed it.

Manuel Lemos: Yeah.

Michael Kimsal: Now, granted, the  number means one thing. Having the weight of some of those people on the list probably makes more sense, or may carry a little bit more weight. But we'll see.

Manuel Lemos: Well, this is a thing that is very new. I think we need to give it time and see what happens in practice. But I see it with good eyes.

Form buttons with progress indicators using Ladda (7:36)

Manuel Lemos: Anyway, moving on to the next topic, this time, I think it would be interesting to comment on... I think it's a library that shows an interesting effect.

Let me put it here.

Michael Kimsal: Yeah, Ladda or Ledda.

Manuel Lemos: Yeah.

Michael Kimsal: Is that what you're bringing up?

Manuel Lemos: Exactly.

Michael Kimsal: Yeah.

Manuel Lemos: And basically, what this does is to give some feedback to the actually process of submitting forms.

You can click on a submit button and show some animation, it can appear in multiple ways. Well, these are just variants of things that can be done with this library.

These are for submit buttons, but they can also show some progress animations here. I don't know if this progress will show according to some action that is actually going in progress and reflects of how far it have gone.

Michael Kimsal: It can. There is a 'setProgressMethod' in there so you could set 10%, 20%, 30% and so on. And it will fill that bar if you do that.

Manuel Lemos: OK.

Michael Kimsal: Yeah. It looks interesting to me partially because I'm in a midst of a very small project right now. And I'm thinking I may want to put this in.

Manuel Lemos: Yeah. Well, I think it's a neat example. Not only that it looks good on your sites, but it is also good for usability because it gives a good sense to the user of what is going on.

And the information that appears on the screen is helpful, namely, the progress bars because sometimes submitting some form that starts a process will probably take some time.

This way, it really shows useful information. It cuts on the anxiety of the user knowing what is going on, how far it has gone and how long it remains to be completed. And these progress bars that appear with these buttons are very useful, I think.

3D graphics for 2D canvas without WebGL using Phoria (10:17)

Manuel Lemos: Now, moving on to another interesting library that I found out and this time, based on 3D object animations.

Michael Kimsal: Phoria.

Manuel Lemos: Yeah, exactly.

And I like this not just because of  the 3D aspect, because we already have 3D animation libraries that can be implemented in browsers, but many of them depend on the support of the current browser and machine on WebGL. And this one just relies on Canvas.

And it seems to be awesome. Well, I don't know if this is feasible in slower machines, because currently with the Core I7 machine which probably makes things much faster than they are in slow machine.

Michael, did you try this? Is it as really fast as I am seeing here on my machine?

Michael Kimsal: Oh, it's fast for me.  It's easily fast for me. I want to share something, because I don't know why this impressed me because there's nothing to get impressed about. It's just the way the stuff works but it had never cross my mind.

Do you see on my screen right now? Are you seeing a cube rotating?

Manuel Lemos: Yes, I'm seeing it now.

Michael Kimsal: Now, I'm going to let it rotate for a little bit more, because it should have the numbers here. See the numbers?

Manuel Lemos: Exactly.

Michael Kimsal: Now, if I say "View Image", it took that image. You can actually see up here. It's data:image/png and then there's this stuff. Because it's Canvas, whatever you do that moment in time, that's the data.

And so, if I come back here and view image of this, I'm getting that image at that moment in time.

Manuel Lemos: Yeah.

Michael Kimsal: It will all probably very obvious to people but it never struck me as "This is an image and I could do 'Save As' or it's a URL. It's a data:image URL, or a data URL that's image/png. It was an accident as I was doing something else. I feel kind of silly that it's taken me years to actually understand that's what's going on.

Manuel Lemos: Yes. Given that the support is based all in Canvas, I supposed you do not have to have a more up-to-date browser there to support WebGL like many other 3D libraries. It seems pretty fast. I don't know if it is as fast as using WebGL implementation.

It already gave me a few ideas because, for instance, in the PHP Classes and JS Classes site, I have those badges that are awarded to users who have moved on from levels. They execute actions to accomplish missions and then move on to next level. They earn badges.

Those badges were originally designed as 3D objects. I was thinking about using this library to implement animations to show badges in 3D, actually render the names of the users on top of the badges, instead of just being ascended to the overlay. It's not bad but it's not as cool as it could be, I don't know.

I think I'll experiment a bit with this to see if it is feasible or maybe starts getting too slow and the objects are complex, which is probably what will happen. Anyway, it's a great idea.

Control Web App with Speech commands (14:34)

Manuel Lemos: Now, I would like to move on to another interesting library. Let me start the sharing here. This one is about what they call adaptive speech. I tried to play with this a bit, but I could not...

Michael Kimsal: Add task.

Manuel Lemos: [Laughter ]

Michael Kimsal: I'm trying to do it right now, and it's not... I got to like, you know, reload it. Yes, a lot.

Manuel Lemos: Yeah. I don't know if you can look into my...

Michael Kimsal: Get some milk at the store.

Manuel Lemos: Yeah. What I...

Michael Kimsal: My mom. Yeah.

Manuel Lemos: I don't know if this is going to work. I said "Do Open". I think  the hangout is stealing the audio.

Michael Kimsal: Maybe try "Do get milk."

Manuel Lemos: Oh, damn.

[Laughter]

Michael Kimsal: No, it's not working.

Manuel Lemos: No, it's not getting the audio.

Michael Kimsal: Oh, well.

Manuel Lemos: Anyway, what this should be doing if it is getting the audio... Well, let me the reload the page and see...

Voice Prompt: Yes, how can I help you?

Manuel Lemos: Do Open.

No, it's not getting it. But what would happen here, usually, is that it will show the new task called 'Open', because I said "Do Open' as you can see here. And  then, it adds the task to the list. And then, I could say, "Complete task" and it mark the... I mean, I would say, "Complete open" and it'd mark the task as completed. And then, "Remove Open" and it remove the task from the list.

The other options, I could not make them work, probably because I was not a saying what is expected by the engine.

But I think it was cool because this is... I'm not sure how it is working, if it is the server service that is recognizing the words or if it is something built in the browser.

Michael Kimsal: It's sending. It's the HTML5 Web Speech thing, I believe, which only works on Chrome as far as I know.

Manuel Lemos: Yeah.

Michael Kimsal: And that takes your voice and sends it up to Google and translates it.

Manuel Lemos: Oh, yeah. So it's like Siri. It's always a server service.

Michael Kimsal: Yeah.

Manuel Lemos: You need to have a connection and so, it won't work if the connection is not very good.

Michael Kimsal: Right.

Manuel Lemos: And it's yet another frustration.

[Laughter]

Manuel Lemos: Well, anyway, I thought it was cool because it was something that was not tied to a specific service that would be restricted for a certain device like Siri. Anyway, as you said, it's based on Google.

And given that...

[Noise]

Manuel Lemos: We have motorcycles passing by.

Michael Kimsal: My gosh, yeah. The sound and the traffic noise is ... Yeah, I live in the country so people feel the need to let everybody know, "Hey, I live in the country, so I can drive a motorcycle. I can drive a motorcycle and I'm going to drag race that truck that has no muffler."

Manuel Lemos: Yeah. It's like that everywhere.

JSClasses User Reputation System (18:06)

Manuel Lemos: Well, anyway, moving on, this time I would like to comment a bit, before we move on to the actual regular topics of this hangout that we have more towards the end, I would like to comment on about some new features that had been implemented recently.

So I like to share an article that I wrote to tell first about a new reputation system that was implemented in the  PHP Classes and JS Classes sites. So, I wrote an article just in PHP Classes and told the JS Classes site users to read about it.

Basically, this is sort of a continuation of greater plan to implement things that make the sites more challenging, more rewarding for people that participate in the sites more actively. So this time, what was implemented, it was a reputation system.

In the last  step of this plan it was that system of missions and levels that you could level up. And, as I mentioned before, you can even get some badges to be recognized for what you did. And this time is a reputation system that just awards some points for all the actions that you did. There is a demo video with more details here.

Basically, what it shows is all the points that you earn for the actions that you did. And you can go here. At the top, there is a yellow button that shows a pull-down menu with your reputation in different aspects. And you can click on this button. It goes to another page that shows the details of your participation.

It shows all the actions that you did, how many points you earned for each action. You can even go and browse your history to the past, even go to the beginning of your participation in the site. In this case, I'm showing the PHP Classes site, but there is also the same thing on the JS Classes site.

It also shows other details like the summary of points that you earned by action. We have here the list of actions that you did. And also, a list of actions that you did not do yet or you have not been awarded any points for them. So far, it works like a suggestion, "Oh, you can also do this and earn some points." And it shows the total at the bottom.

There is also a page that shows the points that you've earned by type of reputation, because different actions can be grouped by types of reputation. For instance, if you are an author and you have probably some classes, the classes earn you points as class author.

If you have rated some packages of other users, you earn some points as a reviewer. If you visited the site many times or did some other action repeatedly, you earn some experience points.

Then, there is also a page that shows where you are in the ranking. It shows your name, people that are the next positions near you, and also the trend based on your rank, considering just the actions of the current month.

So if you are in... well, in this case, I'm showing you where I am in this site, I'm number three all time but in the last month, I got to be number one because I earned all these points. Though it shows this up arrow telling that my trend is to go up because I'm getting better cause...

Well, anyway, the point of this system is more to encourage users to participate more and do all sorts of good actions that are recognized by the site as something valuable that can make the site better as a whole for everybody. And it is just yet another step of something that I wanted to implement.

And the following step is to... how can I put it... reward users by letting them to use those points that they have earned and redeem some additional privileges.

For instance, you are class author and you have earned some points, you can redeem those points and request site to have your classes approved with more priority because classes are moderated and there is a queue. And sometimes, you have to wait for a little while. But if you redeem those points, you can get some priority.

And there will be other privileges that will be implemented over time. I'm also accepting suggestions for things that people would like to have as privileges.

Not all privileges can be given away to everybody, because they require certain resources that would make the site too heavy if the privileges were provided to all users. But the idea here is that just a small group of people that deserves the privileges ask for it, it won't take as much resources. And so, it will be feasible to provide it to everybody.

Michael, I wonder if you have been following this, if you like the idea. What are your thoughts?

Michael Kimsal: Well, I have followed it a bit. And I'm not even talking about this for a bit about...

Manuel Lemos: Yeah.

Michael Kimsal: I don't know if you were using it from reputation before but gamification of some sort.

Manuel Lemos: Yeah.

Michael Kimsal: Actually when you click... because, actually, as you were doing this, I went and did a couple of things, just to play with it... and I like that it actually shows you you're activity stream of "You got points for this. This is what you did," and the "You did this. Now, you're on your next level." Here's this level and there's... I think you're calling them missions.

With me, I probably wouldn't have as much animation in there. That's like watching the stuff do that, open up and fade in and fade out. I'm an impatient guy. I just want to see what the stuff is.

Manuel Lemos: Yeah.

Michael Kimsal: But in general, I think that this has the potential to get people, to hook people. There's a large number of people that kind of get hooked in to this sort of thing. I don't mean it in a bad way. It hooks in to yes, sort of a competitive, comparison nature that people have.

Manuel Lemos: Well, this is, as I was saying just another step of a longer plan and the next step is to provide privileges to those that earned  these points. For now, just earning points probably is not very exciting for many users. Some would like to raise in the ranking and that is already there, but others are not so motivated by competition. They would rather have some benefits that are really valuable to them.

For instance, one thing that you can use, you can redeem  your points and get privileges to apply to certain jobs earlier than other users and eventually, you got some advantage to be considered for that job. I mean, jobs that are posted in the site, not jobs of the site. I mean, PHP jobs or JavaScript jobs.

And the idea is to implement more and more privileges to make this more interesting and valuable, rewarding, as I said before. Well, this is an initiative that will still have plenty of room for improving but the idea is to make the site more interesting as a whole.

This is not exactly a new thing in websites. But for community sites, I think it's very important for every site similar to this that wants to attract contributions, for the other users to provide them some satisfaction and not just limited to consuming the content that is available.

Michael Kimsal: Redeem your points in miles to a trip to Brazil.

Manuel Lemos: Yeah.

[Laughter]

Manuel Lemos: Well, we'll never know.

Michael Kimsal: I'd put  a limit, if you get to a 100,000 points, then we will fly you to Brazil.

Manuel Lemos: Yeah. Or, you may earn a blue elePHant, a PHP blue elePHant.

Michael Kimsal: You flying somebody to Brazil to give them the blue elePHant.

Manuel Lemos: [Laughter]

Michael Kimsal: Come on.

Manuel Lemos: Well, that could be awesome. Well, we'll never know. Just some time ago, somebody suggested that I should organize an event about classes. And if it happens in Brazil, it could be a possibility.

Not just come to Brazil to visit whatever is interesting in Brazil but also participate in great event about classes. But that's just possibilities, nothing concrete, and just to make that eventual trip to Brazil more interesting. We'll see.

Future Features of the JSClasses site (29:12)

Manuel Lemos: Well, anyway, also tied to this, more recently, I have written an article about plans for the future of both PHP Classes and JS Classes. Because the code base is the same, so the features that are added in the site are eventually the same.

So, what happens is that on June 24th, PHP Classes completed 14 years.

I'm trying to share the screen.

[Applause]

Manuel Lemos: Now, it would be a good time to show that birthday cake effect. But when you try to find it, it's hidden somewhere.

Anyway, I have written an article here on the PHP Classes site blog and then I told JS Classes users to go and read it because the future features will be eventually the same.

I also mentioned a bit about the features that were implemented more recently in the sites, like the system missions and levels and the reputation system that was just launched.

So what comes next, it's basically things like these. I have not yet decided  what would be the order of implementation. I'll just review them here very quickly. As I mentioned, one of the things would be the system of privileges for users that earn reputation.

And then, I start considering other things that have been requested for a reasonably long time like having a simple way to bookmark pages and tag them with some meaningful words. So, users that have found certain classes can easily find them later when they come back and have probably more time to take a look into them.

And this has been requested like since many years ago. And when it was time to consider to implement it, something with more priority got priority to be implemented and I ended up not implementing this.

And I have to say that this is very frustrating for me because, unlike Google, I do not make $100 million a day and cannot have resources to hire all these developers needed to implement this. But soon, all the things get implemented.

Another thing that is also being requested a lot is to implement a better navigation of packages, because the site design is not, I would say, less than ideal. Just to know, don't be too harsh against me, because seems I'm responsible for practically all the development of the site. A common complaint is that people when they want to see the files in the packages, they have to do too many clicks or scroll too much the pages.

And I've been delaying the implementation of this, not just because it's a matter of having time. Having the possibility to implement this with a greater priority than the other features.

I had also some concerns that certain things that could be implemented. For instance, an AJAX having part of the content showing on tabs on which some types show and they can be switched to show other content. I was a bit concern about doing it that is friendly to search engines, namely Google.

Google, for instance, they do not like people to hide content. I had to ask some people closer to Google what would be the right way to do this, because I'm not trying to hide any content. It would be just to make the navigation better, organize better the content in the pages.

So what I was told, it would be OK to do it, as long as if JavaScript is disabled, the whole content appears on the page, even if the layout of that content is not very well displayed without JavaScript.

So this is one of the things that will probably get our priority because some users are screaming very loudly against...

[Noise]

Michael Kimsal: Like that?

Manuel Lemos: Yeah, more or less like that.

Michael Kimsal: OK. I understand.

Manuel Lemos: Although, now it's a bit better because in the past, people go on Twitter and complain a lot about the site. And nowadays, people complain less.

Every time somebody mentions PHP Classes or JS Classes in Twitter... I do not follow Twitter very closely but I have a feed that shows searches for the words of the names of the site... and if somebody say something about the site, either good or bad or  complaint or a complement, I always try to see what people are saying. And nowadays, the complaints are not as bad as they used to be before in 2010 when the design of the site was very, very old fashioned.

The current design, it's not like everybody likes it but people are not complaining about as much as in the past and things improved, but they can always improve and that is certainly one thing that is going to happen.

For instance, I like a lot the way GitHub shows the files and packages. Probably, I'll not do exactly like they do it, because I have other things in mind but it will certainly look much better, probably somewhat similar to what they have. And hopefully, people will be having a better user experience.

And also, regarding user experience, one thing that I was wondering is to make the site design more friendly to people using small screens. I'm not talking about people using mobile devices. because, nowadays, there are mobile devices that have higher resolutions screens. But if you have to use a finger, the finger is still too large and it may not be able to point exactly where people want and the navigation is not very well achieved using touch devices.

Michael Kimsal: I'm trying to swipe. I'm trying to swipe and it's not working right now.

Manuel Lemos: Yeah, well.

Michael Kimsal: Your site is not touch-enabled.

Manuel Lemos: But there is an extension in Chrome that...

Michael Kimsal: Here is your extension.

Manuel Lemos: Yeah, well, it's not mine.

Michael Kimsal: OK.

Manuel Lemos: I just tried it.  Because I'm using a desktop all-in-one from Dell that has a touch screen and I can scroll with my finger. Not that it's something that I do a lot but it's possible.

But what I mean is, being small screen-friendly is more about putting less information on the page when the physical dimensions of the site are not large enough, when compared with the size of a finger.

And that was one thing that I wanted to look about. I also considered using responsive design, but I think responsive design is not also a perfect solution for certain cases.

For instance, if you are on a mobile device on a 3G connection that is not really very fast. If you use responsive design, that means that you also be loading content on the pages that will probably not be shown but it will have to be loaded because it's part of the page HTML.

So what would be probably a better solution would be to have an alternative page with actually much less HTML, only the necessary HTML to show it on small screens.

Other than that, one thing that has been requested, but this is more related with PHP world is to support Composer. Composer is a package management tool that allows you to import packages and install them, resolve dependencies. So if a package needs another, it also loads that package. And in the JavaScript, the word I think what is probably closer is NPM, right?

Michael Kimsal: You know, it probably wouldn't hurt to do both if you could.

Manuel Lemos: Yeah.

Michael Kimsal:  Because I think a lot of the... Some of the classes on JS Classes are more intended server side sort of thing and a lot of them are really intended to be used... What's the word I'm looking for? You know what I mean. To be used in more traditional client server, browser server side PHP kind of apps.

Manuel Lemos: Yeah.

Michael Kimsal: And there was an interesting discussion about, that I found out, Composer when it went first last summer, maybe when it was first coming out. And the discussion is should we try to support other stuff besides PHP or should we have one... You have a different tool for every language sort of thing.

And I think because JavaScript code tends to be used in conjunction with Ruby and PHP and C# and all that, that package tools that support say PHP packages should somehow try to find a way to support JavaScript components.

Manuel Lemos: Yes. Yeah, well.

Michael Kimsal: I don't know exactly what the answer will shake out as. Maybe it will be that nothing happens in that respect to JavaScript.

Manuel Lemos: Right. I think it...

Michael Kimsal: You're going to have Composer support at some point in the PHP Classes site. If it's not too much trouble to bring that with the JS Classes, it seems like it would be a big win.

Manuel Lemos: No, it's not any trouble at all because I think what needs to be done is... Well, somehow the sites already supports Composer because Composer can take zip archives and install them.

What probably needs to be done is that not all packages have composer.json file there and probably the site needs to generate that file for some packages.

Other than that, there is also the problem that some packages, or at least a great part of the packages require that the user is authenticated somehow, so the site can keep track of which users downloaded what. But I think Composer supports basic HTTP authentication and it could be done.

The only thing I need to avoid is to let users use the same password that they use to log in the site. So probably the site will generate a special password just for the use of certain applications and then, see how it goes. Because I have not tried it in practice to see if it won't stumble on other requirements of the way Composer works.

Now, for NPM, which is the Node Package Manager, I don't know if it works in the similar way. But, if it is not a big deal, I'll probably also support it somehow to also address the needs of projects that need JavaScript packages from the site, solve all the dependencies.

Well, this is just one of the things that was planned. Let's see how it goes. Before I comment just on the final thing that is being considered,  I'll also run a poll that allows users to tell what they think about the future site and determine what would be more important to implement first.

Just let me show the poll here very quickly. It's a Google Docs form that we have , actually, I have put up.  Just trying to share the screen here. Basically, it shows just all these things that we're considering and let the users write the importance from one to ten.

And also, there are some fields to let the users suggest some privileges for the system of privileges that I mentioned before and also suggest other improvements that they want to see in terms of usability and so on.

And in the end, if people that send the suggestions want to have some feedback regarding the suggestions, they are invited to put their email address so I can reply to them and say, "This is possible. This is not possible."

There was already, actually, a user that requested  support for importing packages from GitHub and I said, "Oh, that is already available since 2011." And so when people share their email address here, I can reply to them and tell things like that and even ask questions... "Well, can you explain that suggestion better?"

And it has been working very well. I have  not gotten many people filling this form, just like 10. But the feedback has been great and useful. I could already see, already anticipate that things that are getting priority are things like the one like regarding the faster navigation of packages and also, the ability to bookmark and tag pages, as well as the reputation system to have the privileges implemented.

Other features like Composer support have some request, not many, but there are a few. And people are also volunteering to participate. And, well, I think that will be great to follow the feedback by putting up this form, so whoever is listening can still help participate in this survey because it will help to make better decisions about what to develop next.

Anyway, the last thing that I mentioned is something that I want to implement in the next month, which is the ability to promote products or services of third parties, could be individuals, could be companies that provide for instance developer tools or commercial components, training courses, events. Mostly, things that can be provided, sold electronically, not required to deliver physical product.

And the idea is to open some space in the site to promote products and services. Eventually, the site will charge a fee because it practically you'll be reselling the products.

So this can be a great opportunity for everybody to make money taking advantage of the audience that site provides. So individuals or companies that have products and services that would like to be able to resell in the site could get in touch and tell about their interest.

There would be a beta period on which the developments necessary to implement this would be tested before it goes live for everybody. Hopefully, it will be good for everybody that has products and services to sell.

Well, anyway, this is it... the things that are planned. I hope people get interested and I will post the link to the survey. So anybody that wants to help guiding the developments that will have greater priority in the future can also fill that survey. And we'll see what comes next, what is more important.

JavaScript Innovation Award Winners of April 2013 (48:39)

Manuel Lemos: Well, practically, we have ended the regular topics of this podcast. Now just to finish here, we have the regular section on which we comment on the latest Innovation Award packages.

Let me share the screen with what were the packages that were nominated for April. So, in May, there was a vote and in June the results come out. And now, we can comment about them. There were not many packages. There are few, just three.

Michael, which ones would you like to comment?

Michael Kimsal: Of course, I'm taking the sheep.

Manuel Lemos: The cheap?

[Laughter]

Michael Kimsal: A cheap shot. Who was this? Tobozo or Tobo-zo from France. I'm assuming that's a handle of some sort, something like a first or last name. And it's a jQuery plugin that puts animated sheep around different page elements. You can say, "This page needs the sheep,"  and the sheep will..."

Oh, is my camera still on? Oh no, my camera's are on because my screen's on.

Manuel Lemos: Yeah.

Michael Kimsal: The sheep will simply walk around and animate. And there's some sample blue square so you can look up closely what the sheep look like. Yeah, it's a plugin that does what it says and says what it does. So, if you need sheep anywhere on your screen, this is the plugin to do it.

Manuel Lemos: Yeah.

Michael Kimsal: I would have recommended some others, but I think this is the sheep plugin to beat now.

Manuel Lemos: Yeah, obviously making fun of this because...

Michael Kimsal: Hey, no, Seriously...

Manuel Lemos: Precisely.

Michael Kimsal: This would be perfect for your ewe-RL. Get it? Get it?  E-W-E? Get it? OK, never mind. That was baaah-aaad, I know.

Manuel Lemos: [Laughter]

Manuel Lemos: Now, with special effects.

Michael Kimsal: Yeah.

Manuel Lemos: Yo. Well, I think it is a bit fun. I don't know if there is a demo page for that, because it was funny.

Michael Kimsal: Just the screenshot.

Manuel Lemos: Yeah, well, anyway...

Michael Kimsal: If there was a Composer package, I would have installed it and run it immediately.

Manuel Lemos: Aww, too bad. But you have like a...

Michael Kimsal: Ooh, I went there, didn't I?  So, trés bien.

Manuel Lemos: No, there is a demo page. Hang on, I have found it. It's not on the site, but it's...

Michael Kimsal: On the GitHub repo.

Manuel Lemos: No, that's the other URL and it is quite...

Michael Kimsal: Demo, here we go. I got it, I got it.

Manuel Lemos: Yeah. So you can...

Michael Kimsal: He's got a list of  JS Classes. I'm going to find it. I don't like the rainbow, though.

Manuel Lemos: [Laughter]

Manuel Lemos: Yeah.

Michael Kimsal: I don't like that. That's a bit silly.

Manuel Lemos: Probably something that is defined with the CSS.

Michael Kimsal: Taste the rainbow. Yeah, it's a bit much. The sheep were good.

Manuel Lemos: The sheep are funny.

Michael Kimsal: Yeah.

Manuel Lemos: Well, I remember that Arturs Sosins was commenting about this, because he likes games. And, although, this is not exactly a game, it could be part of a game like...

Michael Kimsal: People could think it's a game but it's not. It's deadly serious.

Manuel Lemos: This is the angry sheep generator.

Michael Kimsal: Yeah.

Manuel Lemos: Oh, well. Anyway, on my part, I also would like to comment on a couple...

[Sheep Noise]

Manuel Lemos: What's that?

Michael Kimsal: That's the sound effects.

Manuel Lemos: Yeah. I'll also comment about the other two, just sharing the screen here. The other two are... The D.js is basically a promises evaluation...

Michael Kimsal: [Sings] Promises, promises. Like the song, yeah.

Manuel Lemos: Yeah. It implements promises and you can register callback to evaluate if the promises were fulfilled or not. And depending on the condition of accepting or rejecting promise, it could execute different code.

This is a bit different than the regular asynchronous thing, which is just a general callback for whatever is the task that was ended. So, in this case, you can specify different sets of code, depending if the promise was completed or not. So, this is slightly different than the usual thing.

Are you doing that sound or is it me?

Michael Kimsal: It's you doing it, it's not me.

Manuel Lemos: Oh, I have to close that. It was on the other tab.

Well, anyway, this is package from Jonathan Gotti. He already submitted several interesting packages. Some of them have even been nominated to the Innovation Award. So I hope he continues to submit more interesting packages, not just to JS Classes but also PHP Classes.

He has been a great contributor since many years ago. He is from France, like his colleague, Tobozo, means the sheep.

But now, let's move and talk about another package, this time also by a new regular contributor.

Michael Kimsal: MarPlo, from Romania.

Manuel Lemos: Yeah, I think his real name is Mauritius. If I'm not mistaken.

Michael Kimsal: You're not a mistaken, yes.

Manuel Lemos: He's from Romania, as I said. And, this time, he developed actually a component that's somewhat similar to another he already provided. This time, it's a component that you can generate nested menus, multi-level and I think they are linked to each other.

Let me increase the font here.

You can define the menus and you can add more levels and you can add more items and delete them. This component has a part in JavaScript and another part in PHP. So the part in JavaScript does the user interface and submits information to the server so it can be stored in a text file or MySQL database.

So, this type of component is not exactly a basic component. It's more of an application-like component. But it is very interesting. Even if you do not have a specific use for it, you can look at the code, learn and study how to do it. So kudos to MarPlo.

Michael Kimsal: I like the idea of actually having... I actually found the interface for building a little confusing. But I like the idea of you can actually build the menu that you want and then, here's the code. And you can use the library yourself. So you can use it.

A lot of people will say "Here's the library and here's some sample code. I need to figure out how to configure it." But sometimes, it easy; sometimes, it's not.

Manuel Lemos: Yeah.

Michael Kimsal: But this is an actual builder as well if you want to use it, which I think is a nice  touch.

Manuel Lemos: Right. Yes, that's very useful for people that sometimes are learning how to do multi-level menus and wanted to see what kind of codes need to be used to implement it.

So, regarding the Innovation Award packages, for now, that's all. Unfortunately, there are not many, but hopefully, next month, we have more to comment about.

Conclusion (57:07)

Manuel Lemos: So, now moving on to one final section on which Michael comments on the latest...

Michael Kimsal: Nothing, nothing.

Manuel Lemos: You don't have.

Michael Kimsal: We are in process. We are at the moment taking a hiatus, taking a one-month break with JSMag.

Manuel Lemos: Oh, you didn't tell me that.

Michael Kimsal: Sorry, I thought I had told you that before.

Manuel Lemos: Oh, yeah.

Michael Kimsal: So, anyway, that's what's going on there. But stay tuned, or whatever you're do in a podcast or a video cast, whatever. This is a Hangout?  OK.

Manuel Lemos: Yeah, it's a Hangout but I don't know if tuning is the right word.

Michael Kimsal: Yeah, I think people don't even know what tuning means anymore.

Manuel Lemos: Yeah, nobody listens to the radio.

Michael Kimsal: Or the TV. I heard you have to tune in the TV, too.

Manuel Lemos: So either cable or even Internet. There's no tuning.

Michael Kimsal: Tuna fish, maybe.

Manuel Lemos: Yeah, that's a different tuner.

Michael Kimsal: You can tune a piano but you can't tuna fish.

Manuel Lemos: On that humor note, I think that is all for now. Hopefully, next month, we'll have even more interesting topics to comment about.

Thank you, Michael, for coming. That's all for now. Bye.


Login to Post a Comment

Login Immediately with your account on:

Facebook ConnectGmail or other Google Account
Hotmail or Microsoft Windows LiveStackOverflow
GitHubYahoo


Comments:

No comments were submitted yet.


<< Previous: The Latest and Upcomi...>> Next: Better Asynchronous J...

  Blog JS Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Next Web Standards Im...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)