Asynchronous JavaScript without Callbacks in ECMAScript 7 - Lately in JavaScript podcast episode 50

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

Author:

Viewers: 27

Last month viewers: 2

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

JavaScript implementations based on the specification of ECMAScript 7 will provide means to deal with asynchronous activities as if they were blocking activities, thus without using callback functions to handle the responses.

That was one of the main topics discussed by Manuel Lemos and Arturs Sosins in the episode 50 of the Lately in JavaScript podcast.

They also talked about planing front-end based JavaScript applications, creating your own Prezi like sites with BigPicture.js, discovering what JavaScript libraries are used in each site with LibScore, and find out what JavaScript developers have been looking for in 2014 with the JavaScript Zeitgeist initiative.

Listen now to the podcast, or watch the hangout video, or read the text transcript to learn more about these and other interesting topics related with JavaScript development discussed in this episode.




Loaded Article

Contents

Introduction (00:20)

IO.js a JavaScript platform compatible with Node.js (1:36)

Planning A Front-end JavaScript Application in 16 Steps (6:04)

Five Traits of Well-Managed JavaScript (15:18)

Infinite panning and infinite zooming in HTML pages with BigPicture.js (18:43)

ES7 Being Specified in parallel with ES6 Providing Nice Asynchronous Awaiting Feature (22:17)

Know What Third Party Libraries Are used in Sites using LibScore (31:31)

JavaScript Zeitgeist: What JavaScript Developers Have Been Looking in 2014 (38:48)

JavaScript Innovation Award Winners of October 2014 (40:07)

JavaScript Innovation Award Rankings of 2014 (44:28)

Conclusion (47:37)



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: 41MB Listeners: 2566

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

Read the podcast transcript

Introduction (00:20)

Manuel Lemos: Hello. Welcome to the Lately in JavaScript podcast. This is episode 50, now recording from a very cold country. Well, it's cold for me, I think.

This time, I'm recording from Portugal, and actually growing a beard so I can deal with the cold. Not really, it's not that cold. It's just that I've been living in Brazil, and I'm no longer used to this much cold. But I have here a more experienced person, Arturs Sosins from Latvia, which I suppose is a place that is much colder now.

Hello, Arturs, how cold is it over there?

Arturs Sosins: Oh, it's really snowy. It's really cold. I was just getting to the store with a car, getting out quickly, and I came in. I better not go outside for now.

Manuel Lemos: Well, over here, it's warm but since I'm not used, I'm wearing all these clothes.

[Laughter]

Manuel Lemos: Sometimes, I put a hat to protect further.

IO.js a JavaScript platform compatible with Node.js (1:36)

Manuel Lemos: But anyway, we are here to talk about JavaScript. We are already in 2015, and we have already some very interesting topics, events, to talk about. We are going to start precisely from the announcement of... Should we call it a fork of Node.js? It's io.js. As you may see here, it is a plan to have an initial offer release on January 13th.

I tried to take a look at this, and I really could not see much differences, except for the reasoning for this fork is that these developers that started this project thought it would be faster if they carry the development independently from the development of Node.js.

Well, OK, it's interesting because this Node.js is a reasonably large project. It's not a trivial fork. I don't know even how they plan to do it, in terms of having things that probably would not stop people from migrating from one project to the other. Just like, for instance, what happened with MySQL. The main MySQL development is now being pulled by Oracle. Then, there are other forks of MySQL. They tried to keep on pair with own features.

So I don't know how they plan to do this. Will they have separate development that adds features that are not available on the main Node.js project? Arturs, have you been following this new project? What do you think about this?

Arturs Sosins: I don't know if the only added value is the faster weekly releases and making new releases as fast as possible. I don't really see much of added value. If there were production for clients, I would rather go with a stable Node.js and wait them to implement other features on engines once they are stable enough and once they are confident with it. So, for now, it seems more like a playground. OK, let's see what's, where it's going.

Manuel Lemos: Yeah.

Arturs Sosins: But one thing that they're saying, that it will be compatible with Node.js. For now, at least, we'd be able to see there and take any new update to bring any performance, maybe, increase or something like that.

Manuel Lemos: Well, if it is just performance, it's not really a big problem because as you know, performance just makes things faster, not different. Well, let's wait and see.

I'm not really a big fan of fork because it sort of dilutes the efforts of people that could be working together rather than competing with each other. But OK, they have their reasons. They thought that Node.js was not being developed by Joyent at an appropriate speed, so they probably have their own reasoning. Probably, for them that makes sense.

Planning A Front-end JavaScript Application in 16 Steps (6:04)

Manuel Lemos: OK, so moving on to next topic, now, we're going to talk about an article. It's actually one of those articles that talk about recommended, if not best practices, at least the practices that the author would think would be appropriate. In this case, he is talking about planning front-end JavaScript application.

Let's see. here, they present 16 points. I'm trying to cover them very quickly, so we can reflect a bit on this. This mention first, "Verify if you have a working and stable data API", because the front-end part will consume the API. It must be stable and sufficient for the needs.

Then, there is the second step. This is, "Select software management tools", all sorts of tools like version control, documentation, bug registration and keeping track of the tickets around bugs and so on.

Then, they mentioned, "Create a foundational specification". Well, it's not really clear what they mean what would be a foundational specification.

Arturs Sosins: For front-end application, you would probably consider on which ground, definitely, I think, about either you're only the new browsers who are trying to support the...

Manuel Lemos: Oh, I see.

Arturs Sosins: Or something like that, probably.

Manuel Lemos: Yeah, that what we can see on this table, some examples of platform that they want to support.

Then, "Select software development process", which is more how do you want to go to develop or support project, and how to organize the team and the meetings and so on.

"Select a development platform and a host platform", this is curious because they mentioned here, "development, Node.js running locally", "staging & production host, Node.JS running on modulus.io", whatever this is.

This is interesting because this mention planning a front-end JavaScript application. Then they mentioned Node.js as examples. Usually, Node.js is on the server side, right?

Arturs Sosins: Yeah.

Manuel Lemos: OK, they are just too attached to Node.js to forget that Node.js is not so much about front-end. But something has to serve the APIs of the server side to serve data for the front-end.

Then, "Select package managers", one for the server side, another for the browser side.

"Select site and user analytics"... they mention some tools here.

"Select error, quality, and style code enforcement tools", this is always interesting because there are all sorts of links and hints.

What else? "Select an automated task running tool", this more like those automation tools like Grunt and the others.

"Select application architecture/structure, corresponding tools and solutions". Oh, I see, they mean what frameworks do you use, if they use MVC or what are their...

Arturs Sosins: Maybe like the Angular.JS or Backbone.JS.

Manuel Lemos: Yes. Because different frameworks are most suited for different design patterns that they want to structure their project.

Then, "Select testing methodologies and tools", this is for testing this. There is nothing special to mention about this.

"Select code quality tools", this one sort is related with the previous because code quality often is related with testing. But, in this case, they gave an example of Plato, which is JavaScript source analysis, probably to detect things that testing will not detect.

Then, "Define deployment strategy". This is planning? Oh, I see, how you are going to deploy your application to the server.

"Select package monitoring solution", they mentioned this Kendo UI. I'm not sure if this is the commercial tool. Yeah, I see. This is to maybe to monitor new versions of the packages, probably.

"Select a JavaScript error monitoring solution", this is interesting. This is interesting in theory because I never used JavaScript error monitoring tools. Arturs, do you use anything like this to detect errors that are happening on the browser side?

Arturs Sosins: No. In company where I work, we log with them, and if something happens to client, we get the raw files, but they're not reporting things or anything like that.

Manuel Lemos: Yeah, I think there are some services that when there are errors happening on the browsers, they can log the errors to the server. I don't remember any one specifically right now, but OK, I think this is the kind of thing they are looking for at this point.

Hang on, I want to move to the screen.

And then, finally, "Select a performance monitoring solution". This is to see if the service is running, but he mentioned Pingdom, because performance usually suggests measuring speed and things like that. Pingdom can be used to see if the service is up. I'm not sure if Pingdom could be used for other things than just monitoring that. Maybe if it is some feature.

Arturs, do you use all these steps in your planning or you do not do that much detailed planning?

Arturs Sosins: Actually, for the same company that I work in, lots of these steps are used and implemented and were thought about. Not all of them probably, but what would make sense if you are creating a large-scale application and building the business around it, then testing is a must.

Manuel Lemos: Well, in theory, you do all these planning, but most developers find it a bit boring, and let their managers do it.

[Laughter]

Arturs Sosins: Yeah. I didn't mean like beforehand. It actually come naturally, like that. It's falling into the system so it's all great.

Manuel Lemos: Yes, I see. There are steps that sometimes are boring because somebody... They are sort of bureaucratic but they are useful. I think this article is just great to let you review your own practices and see if they're applying all these steps. Maybe there is one of the steps that is not being so well-implemented.

Five Traits of Well-Managed JavaScript (15:18)

Manuel Lemos: Now, moving on to another interesting article, yet another list of topics... "Five Traits of Well-Managed JavaScript". Let's review again very quickly what are these steps.

First, "dependencies are always declared". I think he mentioned previously that would be like suggesting using require.js to declare the dependencies on the code, right?

Arturs Sosins: Yes, so basically, you would need to choose some dependency manager when you use it. That way, it would guarantee that you have all the dependencies to run scripts that you have.

Manuel Lemos: Second point is, "Third-party code is shimmed".

Arturs Sosins: Basically, if their dependency manager does not support this specific code or specific plugin, that you can somehow manually insert and hack it into it.

Manuel Lemos: So something needs to implement those dependencies on third-party code and make them work correctly.

Then, "third part is definitions are separate from executions". This is more or less common sense.

[Laughter]

Manuel Lemos: You are not going to mess things, but when you're starting programming, you'll always do things a bit more messy than the one you do when you are more matured.

The next point, dependency loading is async. Well, loading is always async, right? Browsers load scripts asynchronously, one after the other. You can always use some libraries to load them asynchronously at the end.

Finally, modules do not depend on globals. This is important to not have collisions of global variables between different libraries or else it can cause a big confusion. Well, these well-managed five traits, these traits, I don't think they're so evident. Not because they are not good. It's because there is a language here to describe them that they are not evident to whoever is reading the article. But in general, I agree with them.

What do you think, Arturs?

Arturs Sosins: Yes, more or less, they make sense. Whether to use them or not, is of course, is a choice.

Manuel Lemos: Yeah.

Infinite panning and infinite zooming in HTML pages with BigPicture.js (18:43)

Manuel Lemos: OK, now moving on. Now, talking about an interesting library that sort of reminds me of Prezi. You know Prezi, that site? I think it's all done in Flash, right?

Arturs Sosins: Probably.

Manuel Lemos: Yeah, but I've seen people implementing similar effects on text using JavaScript because it can do all these things in JavaScript. So, as you may see here, there were different blocks of text on the page, and you can spread them in different parts of the page.

You can also move them individually, individual works. What else? Move to zoom in. Page down works. I was in the mouse wheel because it's simpler.

Arturs Sosins: F2 also shows the biggest picture that we have.

Manuel Lemos: Oh, yeah, and it use F2 to follow the zooming.

Arturs Sosins: You can also search for specific words. Does that work?

Manuel Lemos: Oh, really? Where are you searching?

Arturs Sosins: I know, zoom.

Manuel Lemos: I see. Are you using the search function of the browser?

Arturs Sosins: No, no. It's some kind of library internal function.

Manuel Lemos: Oh, F3. Because F3 is the, the ...

Arturs Sosins: Ctrl+F does the same for me. It's like they are overriding the key;

Manuel Lemos: No, but it seems to use... Oh, no. It's not the... It confused me for a moment. I thought it was the internal search of the browser.

Arturs Sosins: You're not using it internal search enough.

Manuel Lemos: Yeah, it's different. So different.

Now, it's interesting. When you are presenting a big mess, you can always search for whatever is the mess you are looking. It's interesting. I'm not sure what it is the way it is supposed to be used. It seems that you would scroll, you would compose presentations, dragging things on the screen. Well, in this example, it doesn't... Right click, oh, I see. You can just click on some part of the page.

Arturs Sosins: You can use like a white board, like...

Manuel Lemos: Yeah, can this be saved somehow? If you want to save this, how do you do it?

Arturs Sosins: I don't know. That's not in the demo.

Manuel Lemos: Maybe there is a way. It's not evident. But it seems neat. If you want to cause an impression and even some presentation that you want to present with Prezi-like effects. OK, it's nice.

ES7 Being Specified in parallel with ES6 Providing Nice Asynchronous Awaiting Feature (22:17)

Manuel Lemos: Now, moving on to another interesting topic. This time, it's about the plans for ECMAScript 7. There is this presentation by Jafar Husain from Netflix. He's been working on the specification of ECMAScript. He says he's a member of TC39. It's a working group for ECMAScript specification.

This is a video here. We're not going to watch the video, just mention a few topic that they cover here. Basically, they say that ECMAScript specification will be... It's planned to finalized by the middle of 2015. In parallel, they are also working on the specification of ECMAScript 7.

There are many things interesting here, but I think one thing that got my attention is that finally JavaScript will have a way to write code that needs to wait for asynchronous events, actions that need to be executed, and they will not be finished right away.

One thing that they mentioned is... I think it's a new keyword... a new construct called await.

Arturs Sosins: Yeah, can you click on that 32nd minute in the video.

Manuel Lemos: It's 37.

Arturs Sosins: Maybe I can show the screen also.

Manuel Lemos: Yeah, that will work, too.

Arturs Sosins: Yeah, do you see? Zoom in.

Manuel Lemos: For some reason, Google Hangout is not switching automatically to the screen of who is talking.

Arturs Sosins: So, you don't see anything.

Manuel Lemos: No, it's always switching back to me. If you click, when you talk, remember to click on your own picture below. Can you click it?

Arturs Sosins: Like this? I don't know. Yeah, I've clicked it.

Manuel Lemos: But it's not working.

Arturs Sosins: It's working for me. I see my screen.

Manuel Lemos: Yeah, I have to do it on my end.

Arturs Sosins: OK.

Manuel Lemos: Let me try to not forget to do it or else, you'll be talking and nobody will be seeing you.

Oh, exactly, that's one example of what I was talking. You can use that await keyword, and it seems to return a promise or something, so promises become built-in data types. A promise can be is an object that you can get a success or failure in case it fail for some reason. I think it can get an exception message for something. I'm not sure. I did not try this in practice. It is just a plan for ECMAScript 7.

It seems interesting because you no longer have to put all those callbacks which used to be very, very ugly, and make us much less productive because we have to get your head around lots of callback code, and sometimes, you need the result of that callback code outside in the calling code and that could not be possible.

So now, with this code, you can have a variable that can return the result of the operation whether it failed or succeeded. I think that's the way it is supposed to work.

Arturs Sosins: Yeah.

Manuel Lemos: I listened to this talk. It's very interesting, and he mentioned the promises and also observer objects, which are also part of the ECMAScript 7 specification.

Arturs Sosins: Actually, I just built it up a little. This actually reminded quite about Hack language that's going to PHP. It also implemented that.

Manuel Lemos: Exactly. Yeah.

We talked about it a few months ago because Facebook created the Hack language as sort of evolution of PHP. They could not wait for the PHP Core Developers to implement the features they thought to be interesting. Many of those features were not going to be even available on PHP 7, which is planned to be released by the end of this year, 2015.

The interesting part is that it's very similar to what Facebook Hack, as I mentioned, will implement in terms of being able to have code that acts asynchronously, but you put it as if it is synchronous. So you put those await statements, and the execution will resume right after those lines. We can write code that works asynchronously but works as if it is synchronous.

This is great, I think. It is something that we had been begging for years because it was something that was making JavaScript less pleasant than it could be.

Well, at least in my opinion. What do you think, Arturs?

Arturs Sosins: Yeah, I'm thinking quite the same. In some cases, you need to execute lots of asynchronous functions in a group, and then you all would need to create some kind of scheme like using Async.js or something like that. But if you need to execute them sequentially, one after another, then it's even more a pain. So this kind of addition is great. You don't need to use it every time, but in some cases, it really will make the jobs easier.

Manuel Lemos: Personally, I think you should use it all the time, but now you have to wait for ECMAScript 7 to be available.

One interesting thing that they mentioned that sound a bit intriguing is about they use transpilers to test the specification every time they want. This is intriguing because if they use transpiler to generate ECMAScript code for the currently available versions, it means that to implement await keyword, it will be possible already.

I'm not sure if I'm interpreting this correctly because if it would be possible, we wouldn't need ECMAScript 7 to implement this. I don't know, maybe I'm interpreting this incorrectly.

What do you think, Arturs?

Arturs Sosins: Probably, they have some kind of their own environment, their own sandbox where they're doing, and it can basically do it in a browser. But if you look at the video, there are also examples in the presentation where they show how the code would be executed, so probably, yeah, they probably did it in reality and tested its functions.

Manuel Lemos: Well, I don't know. Maybe that part has not really been tested with transpiled code, it just the parts that are possible. Because I think it requires a JavaScript engine that has specific support for this. Well, I don't know. It's either that or I'm interpreting it totally wrong.

[Laughter]

Know What Third Party Libraries Are used in Sites using LibScore (31:31)

Manuel Lemos: OK, moving on, now we are going to talk about an interesting site that mentions the users of certain libraries. It's called Libscore, you go to Libscore.com and then, you type the domain of some site, and right away, it shows you the list of libraries that are being used on that site. They mention scripts and their domains. On the right side, they show the number of sites they found so far using those libraries.

For instance, Google Analytics, they found 559,000 sites using Google Analytics. There are all the others. There are some interesting libraries here, which are not supposed to be that popular. Like this ML in reality is prefix that I use in my own packages.

Manuel Lemos: It's like a namespace. Just to avoid collisions with other libraries, I prefix it with ML. and then the name of the packages. It says there are 53 sites using this package, which is interesting because I have no idea where are those sites, and when I click there, it doesn't tell me which sites those could be. So I have no idea how they pulled these numbers. Maybe it's something that is not evident.

So if I put Google Analytics, what they... They just... Put me to the Google Analytics site. Well, this is curious. Maybe in the future, they can disclose more information about this number here, where they got it.

Well, anyway, what they say here, if you want to assign libraries to their official pages, you can I think, go to this page and inform them. YepNope, Modernizr and so on. This is interesting. If you have a library that you want it to be recognized by this site, by this name, you just go there and inform the URLs of those libraries.

Let me close all these pages here. We don't need them anymore.

JavaScript Zeitgeist: What JavaScript Developers Have Been Looking in 2014 (38:48)

Manuel Lemos: Now, finally, one last topic, apart from the usual topic, we're talking about the JavaScript Zeitgeist initiative. Let me share the screen here. Basically, JavaScript Zeitgeist is an initiative of the PHP... actually, both PHP and JSClasses sites. OK, I think the zoom is OK.

Basically, this is an initiative to find trending keywords that are related topics being searched by users, in this case, of JavaScript. There is also the PHP version one.

Here, it is a ranking that shows the trends for 2014. Basically, how this works is that the JSClasses site records the keywords that are being used on Search by the users. Then, it elaborates the ranking of those keywords, and the new keywords that did not appear in the past years will be appearing in this 2014 rankings.

So this has the dollar keyword is the first, but in reality it appear in rank 92 this year. This means that in JSClasses site, the user went there and searched for dollar. Dollar, I think, it is a library submitted by a developer. So they were looking for things like this. There are many other keywords.

Arturs Sosins: Though for now, I guess it's interesting, I have a proper noun extracting class for PHP. So maybe I should port it to JavaScript, too.

Manuel Lemos: Yeah, that's also interesting. When they are searching, they can either find the package there or not. So, it is interesting to see opportunities for developers that submit packages to JSClasses site for eventual packages that do not have a package in the site so far.

You can see many others here... magnifier, user registration, JS Webcam. I think this is a package that is already there... video cam kit, webrtc, many others.

So right now, we are just recording this Hangout but there will be an article talking about this. This article is not yet published. We don't know yet what will be the organization.

But in general, what I do is try to gather these keywords in form of related topics to see if there's a trend. For instance, if you have here magnifier and then you have here blur effect, they seem to be image effects or maybe effects on page element, could be interesting to recognize there is trend of people looking for image effects.

Later, the article will be published, and then we will see better what were the trends. Other than that, Arturs, did you notice any trend that you found interesting looking at this keywords?

Arturs Sosins: First one that I've noticed, that there are a lot of MySQL requests, and it's probably due to a recent topic we discussed that MySQL now supports REST API to query data, but to execute SQL queries, basically.

And so, people are now looking in JavaScript component to take advantage of it and provide that access from a front-end app. That is something that developers are interested. They've been creating interesting components that would allow manipulate MySQL database.

Manuel Lemos: Well, maybe that could be it, although it's a bit insecure to access MySQL from the browser, because we have to provide the password to connect to the server. Maybe they could be looking for Node.js components, not so much...

Arturs Sosins: Maybe.

Manuel Lemos: Not so much for the browser-side queries.

JavaScript Innovation Award Winners of October 2014 (40:07)

Manuel Lemos: OK, we practically reached the end of the new sections, new topics. So now, we're going to move on to the usual topics related with the JavaScript Innovation Award.

So for the Innovation Award of JavaScript, we are going to talk about the nominees of October. They were voted on November. Then, in December, the results come out. So we can talk about them.

Arturs, which ones would you like to comment?

Arturs Sosins: Let me share the screen. The first one I would like to comment is a package named jQuery Dialog AJAX Content developed by Andi P. Trix from Romania. What this package does, it retrieves the contents to display the dialog from a server. Basically, a dynamically retrieves it via Ajax request. This could be used also like loading the template or dialog from other remote source or something. That's why I like this one.

Andi got one book of choice by Packt for this package.

The second one I wanted to comment is a package named JavaScript Holiday Dates by Pierre FAUQUE from France. Basically, this package extends the Date object, the JavaScript Date object, where it provides, as an example, where it basically calculates the holiday days.

Let me see the code here. You can see getEaster, getPaques, and now, with getHolidays. Basically, there are some holiday names where you can provide them how to calculate them.

Manuel Lemos: Yeah, because those are holidays. They always happen, but there is some kind of formula to calculate them because they are related. They are...

Arturs Sosins: Like first Sunday for that month and something like that.

Manuel Lemos: Yeah. So there is a way to calculate them, but not exactly a fixed day in the year.

So that one was from Pierre FAUQUE.

On my behalf, I would like to comment on an interesting package. Let me share the screen here. An interesting package from Pierre-Henry Soria, he developed a way to retrieve data from GitHub profiles and repositories. So, it sends HTTP requests to GitHub API to retrieve some of that information.

This is interesting because GitHub is a very popular project. Many developers host their projects there and with this package, you can retrieve information about those projects.

Arturs Sosins: Or a developer can implement in their websites or display all the repositories they maintain and stuff like that.

Manuel Lemos: Yeah, exactly. So, on my behalf, that's all for now because there are only three packages.

JavaScript Innovation Award Rankings of 2014 (44:28)

Manuel Lemos: So let me comment now on the Innovation Award ranking for 2014.

We have already ended the year, but there are still some votes to compute. But, so far, the leader is Thomas Bjork from Sweden, followed by David Castillo... sorry Thomas had 4 packages ad 15 points, David Castillo with 2 packages and 13 points, Pierre FAUQUE 3 packages and 12 points, Jimmy Bo 4 packages and 11 points, Andoitz Jordan Marmolejo with 2 packages and 10 points, then several other authors with 1 or 2 packages and less points.

In terms of countries, so far, France continues to lead. It is in pretty good shape to win the Innovation Award of the year by country. They have 5 packages and 21 points. Then, they're followed by Sweden, 4 packages and 15 points, practically all by Thomas Bjork.

And then, Mexico, with 2 packages and 13 points, Spain 3 packages and 12 points, Canada 4 packages and 11 points, Italy 2 packages and 8 points, Hungary 2 packages and 7 points, India with 2 packages and 6 points, then Colombia with 1 package and 5 points, and Brazil, 1 package and also 5 points. They are tied.

We still have one month to go. I mean, for computing the results because the nominees of December were announced just a few days ago, and they'll be voted during January. Then, in February, the results will come out, and then, we will have finally the final list of winners by author and by country for 2014.

Arturs Sosins: But what to do thereafter? Will there be the similar contest this year?

Manuel Lemos: What do you mean?

Arturs Sosins: Well, should they start submitting for the new year - the countries?

Manuel Lemos: Sorry, I did not listen.

Arturs Sosins: Like will there be the Award winners by country of 2015?

Manuel Lemos: Yes, of course. Actually, it has already started because all packages will be nominated by the end of the month. So, if they are published already in January, they'll be nominated, of course.

Conclusion (47:37)

Manuel Lemos: So practically, we reached the end of this Hangout. It was very interesting. Many interesting topics were covered. I don't know, Arturs, if you have any final remarks. Anything you wanted to mention?

Arturs Sosins: All that I can say is that happy New Year to all the guys, and we'll get more active in 2015.

Manuel Lemos: Yeah, exactly. I just want to mention something very, very briefly. It's that in JSClasses and PHPClasses are implementing responsive interface. which means it squeeze the pages. If you have a mobile phone, you may have a better view of what is being presented, sometimes eliminating less important information, just for the more important information to not be squeezed.

Right now, only the homepage is adapted for mobile, so don't bother trying other pages. There are many types of page. You have to deal with one type of page at a time. I'll be announcing this when it is ready.

Probably, I will write an article on this because there are many decisions that I'm sure other developers will be struggling which is the best way to implement a mobile site.

Arturs Sosins: They will trash you.

Manuel Lemos: Yeah, well, for sites, we still need to go mobile on the Web. Some people prefer applications, but the development of that is not trivial. Practically, we don't use much except for eventually APIs are implemented. But for sites, there are three options to go - responsive, redirect into a separate site or dealing with this thing that the user agent and all those have certain impacts.

I'll write an article to explain my decisions, and so people can evaluate and maybe consider also their own option that may be different. Anyway, that will be a topic for a future...

Arturs Sosins: You probably should also mention that the reason that you are doing this is probably because of Google, right?

Manuel Lemos: Yes, yes. Google is part of the reason because this type of site is not really a site that many will use from a mobile device. Programmers usually have large screens and don't have these problems dealing with screens. But Google has been warning that they will eventually penalize sites that do not provide good user experience for mobile users.

But I think the greatest benefit is if you have a site that is adapted for mobile devices, maybe you'll start getting more users from using mobile devices that you did not get in the past. Probably, not so much to browse packages, but for instance to read articles in the blog, and so, those makes more sense.

Practically, we reached the end of this Hangout. I like to thank you Arturs for coming, and on my behalf that is all for now. Bye.

Arturs Sosins: Bye. 


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

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

Login Immediately with your account on:



Comments:

No comments were submitted yet.




  Blog JS Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Asynchronous JavaScri...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)