Retrospective of the JavaScript World in 2011 and What to Expect for 2012- Lately in JavaScript podcast - Episode 14

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

Author:

Categories: Lately in JavaScript podcast

The year 2011 has ended with lots of interesting developments in the JavaScript world. That was one of the main topics discussed by Manuel Lemos and Michael Kimsal on the episode 14 of the Lately in JavaScript podcast.

Things like the progressive death of Flash, the increased pace of development of newer browser versions, single page Web apps, etc.. were just a few of aspects they commented.

They also covered some of the most impressive JavaScript libraries released in 2011 and what they expect for 2012 in the JavaScript world.




Loaded Article


Contents

Listen or download the podcast, RSS feed

Read the podcast transcript


Click on the Play button to listen now.


Download Size: 26MB Listeners: 1208

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

Show notes

  • Flod.js JavaScript Music format player

  • Mulberry PhoneGap Mobile App Development helper

Contents

Introduction (00:20)

EcmaScript 6 Planned Features (1:53)

Speedup Page Loading Delaying Image Loading with TGV.js (11:15)

Unobtrusive Notifications with Humane.js (15:20)

Play Amiga Computer Music Formats with FlodJS (17:55)

Fast PhoneGap App Development with Mulberry (20:22)

Retrospective of the JavaScript World in 2011 (24:40)

The Latest JavaScript Objects Published in the JS Classes site (38:24)

Contributors Reports E-mail Messages (51:00)

Upcoming Articles on the next JSMag magazine issue (52:28)

Lately in JavaScript podcast in Portuguese (55:41)

JavaScript Plans for 2012 (56:40)

Conclusion (57:58)

Introduction (00:20)

Manuel Lemos: Hello, welcome to the Lately in JavaScript podcast. I am Manuel Lemos the host of the podcast, and for this show, which will be episode 14, the last of the year 2011, I have here as always Michael Kimsal. hello Michael, how are you doing?

Michael Kimsal: Bom dia.

Manuel Lemos: It's always nice to listen to your exercise of foreign languages.

Michael Kimsal: That's not foreign to you, that's Portuguese.

Manuel Lemos: Yeah, but I think for most of the audience it is foreign, I think. There is a great community of developers either in Portugal or in Brazil that speak Portuguese, but that's probably like 5%.

And, anyway, this is the last episode of the year, as I said, and I thought it would be interesting to, apart from the regular topics about stuff that we've been seeing in the JavaScript world in the latest weeks, last month, this month, December, I thought it would be interesting to do a recapture of the 2011 year, but I think probably it would be better to start with topics of things that happened recently then we move on to our review of 2011.

Michael Kimsal: I agree, I agree.

EcmaScript 6 Planned Features (1:53)

Manuel Lemos: Yeah, and I would like to start talking a bit about the plans for ECMAScript 6. For those not familiar with ECMAScript it's basically the parent of JavaScript. Actually ECMAScript is the standardization effort to define the base of the language. And ECMAScript 6 is being defined and there are plans for interesting new features.

Michael, did you look into what is being planned for ECMAScript 6, what do you think?

Michael Kimsal: Well, I had a quick look, like the let keyword, I've looked at a few of these changes that have been proposed or are in the works, but I didn't get a chance to dive into them enough.

And the first one I looked at was let and it reminds me of Basic, which I'm not sure if that's intentional or not but I'm just not sure. I'm seeing it as a scoping issue but I guess I don't do enough complex JavaScript to know what impact that would have on me directly, probably... and I suspect with a lot of these things for people like me that use JavaScript secondarily or an adjunct to other applications, other web stuff, it may not make a big difference directly to us, but it's going to help other people who do, who build the building blocks, the Dojos the jQueries the Nodes, all those sorts of things.

So sometimes I'm not really sure I'm qualified to speak too much about the pros and cons of these proposed changes.

Manuel Lemos: Yeah. Well, it seems to me that it's probably to help optimizers to figure, engines that...

Michael Kimsal: I hadn't considered that aspect, but yeah, probably some of these would help.

Manuel Lemos: I'm guessing; I'm not sure if that's the case, but if they can see that a variable is local or is global, or I mean outside the scope of the current function, the current object, probably it will help them to figure better all the process of accessing that variable.

I'm not sure if that's the case because I just read an article about a talk that was given by David Herman on YUIConf 2011, and that seemed to be the purpose, but it didn't seem to be important. Other than that, other features that are planned like default arguments and multi-line...

Michael Kimsal: The default argument is that this isn't going to work in IE6 and no one will adopt it, that's the default argument. Sorry, was that too awkward?

Manuel Lemos: I think all this that is new will not work in the current JavaScript implementations, but these are new features that are meant for future JavaScript.

Michael Kimsal: Well, I was trying to make a  bad pun, or I was trying to make a good pun there but it didn't work out so it was really a bad pun with default argument, but it actually brings up a broader topic that I don't see specifically discussed in this article, but that gets down to the heart of JavaScript itself, it gets down to how we think of JavaScript server side versus client side in the clients that we have, and I know I've talked about this maybe in 2010, certainly at the beginning of 2011.

We don't have a way to change our engines. So, looking at this, this kind of freaks me out a little bit, I'm wondering... these changes probably won't come about for another year or so, but how would I take advantage of those in a browser setting, just start using the let keyword?

Manuel Lemos: Yeah, it will break.

Michael Kimsal: That's going to break a lot of stuff, and we have no way of giving people new JavaScript VMs other than saying upgrade your browser. Now, I will say the trend that we've seen this year of faster iterations, Chrome and now Firefox are going through every few weeks there's minor automatic updates or nearly automatic updates, to the extent that we may see those happening in Safari and maybe even IE in the next couple of years.

That may be less of an issue but I still don't want to have to upgrade my entire browser just for one thing, I should... we have JavaScript engines... and we talk about V8 and SpiderMonkey and all these things, they are separate components and yet they are still so inexplicably, or maybe explicably, tied to the browser itself that I think if we'd had modular JavaScript engines that we could plug and play we would probably have seen earlier more iterations than we've seen already.

But I'm not a developer in that sense, and in some sense the open source people would say, well, you're not qualified to talk because you're not giving patches, and I kind of agree with that but I get that...

Manuel Lemos: That's from the PHP world, right?

Michael Kimsal: Well, not just PHP, a lot of open source in general says shut up and just submit your patches, and I'm not saying I'm the one qualified to do this, but just because you're not coding directly does not mean that you can't give some constructive feedback about what would help end users, what would help people outside that were coding, and so on. But I'm kind of getting off-topic there.

Manuel Lemos: Well, a couple of things there. One thing is that this ECMAScript 6 effort is to make it standardized, and what you mentioned about if you don't submit patches you cannot give your opinion is something more like of the PHP world as I commented, but PHP is not standardized at all, there is no specification for PHP, there is no equivalent to ECMAScript as there is for JavaScript.

Michael Kimsal: Or Python or Ruby as well, yeah.

Manuel Lemos: Yeah, well I'm sure I think there is some standardization effort for Python, I'm not sure.

Michael Kimsal: No, I'm saying there's more standards around Python and there's more standards around Ruby as languages than there are around PHP, yeah.

Manuel Lemos: Yeah.  Anyway, the other thing also related with PHP is some of the features that I see here are very similar to what there is in PHP, like default argument values or for when you do not pass any value for a certain argument, as we all multiline strings, and also something that they call templating which is basically you can insert some marks in the middle of a text string that get us those strings evaluate runtime by replacing some variables with their values in the string, that is not just PHP but it kind of reminds me of PHP a lot.

Michael Kimsal: Yeah.  Actually some of that syntax looks like Smarty.

Manuel Lemos: Yeah, right. Another thing that I would like to comment on regarding the eventual adoption of ECMAScript specification, in this case it goes to version 6, is that it will take many years to become something that is used in JavaScript version used in the browsers that will be used.

I think that because if you look, for instance, for PHP 5 it took four years until the core people decided to put end of life to PHP 4, and only then PHP 5 started getting more serious adoption because many providers, hosting providers decided, oh, I they are killing it now, so now you have an excuse to impose PHP5 to our customers.

And if JavaScript goes in the same lines I think we will need to wait a few years to see these features being implemented in the current JavaScript version used in the browsers, I think.

Michael Kimsal: Maybe we'll see some tag, either some header tag or some markup that you can put in a document that would say use this other engine, and maybe they're not quite pluggable engines but we may have a compatibility layer that allows new code or old code to be run in the same browser at the same time.

Manuel Lemos: Yeah.

Michael Kimsal: That would probably be ugly but I could probably see that happening before I see totally pluggable, replaceable engines.

Manuel Lemos: Well, that somehow is what was happening with Flash because when you needed a Flash version that requires a new version of the engine, the sites could always make it show in some way that would guide the user to upgrade to a newer version and it would work like a pluggable engine, that's because Flash support is still a plugin.  Well, we'll see if JavaScript engines go that route.

Michael Kimsal: Or indeed if Flash is around a year from now. Whoa, sorry, I went there. Is it too early? It's still 2011.

Manuel Lemos: Well, I think we'll get back to that when we do the recapture of the year.

Speedup Page Loading Delaying Image Loading with TGV.js (11:15)

Manuel Lemos: But now moving on to another topic, one interesting library that I have seen recently is called TGV, I don't know if TVG is...

Michael Kimsal: That's a naughty sexual term I think, yeah.

Manuel Lemos: I think they call fast trains in France.

Michael Kimsal: Well, over here it's transgendered something or other, not that there's anything wrong with that, but it might be... if I was to look at that I might not use a TGV JavaScript library just because it might look one way, but then if I looked at the code underneath it might be something totally unexpected.

Manuel Lemos: Yeah.  Never know what something means in a different country.

Michael Kimsal: Exactly.

Manuel Lemos: Well, anyway, this library is basically to reduce the loading times of pages by deferring the load of images which is not exactly something new but it's always nice to see this as a standalone library.

I think I have seen some jQuery plugins to implement the same effect, but being a standalone library for some reason it would not like to load jQuery as well, having this as a standalone library which when minified it is only 3Kb, I think it would be interesting, but basically that's the effect of this library.

And I think it is probably interesting nowadays that Google seems to, well, that's what they say, they take in account page load times as a factor to rank pages in the search results.

Michael Kimsal: Do we know for certain if they're counting...

Manuel Lemos: Oh, we never know.

Michael Kimsal: ...full page load time or just the response time from the server, or maybe it's both. Five years ago to the idea to say, oh, they're going to execute JavaScript code and see how long everything takes to load up would've been crazy.

Manuel Lemos: Well, we never know exactly what they do because they avoid getting into much detail because they...

Michael Kimsal: ***.  Sorry.  I meant nice people.

Manuel Lemos: Well, you were sincere and you expressed your opinion.

Michael Kimsal: Are they a sponsor, Google, well they're not gonna sponsor if I keep badmouthing them.

Manuel Lemos: Well, somehow Google sponsors the whole Internet because they send a lot of traffic. Well, if we see a great drop of traffic in JS Classes then we know what caused it.

Anyway, back to this library, that it's designed to reduce page load, and for people that are looking for a solution that does just that it is probably a good option.

Michael Kimsal: You know what I didn't see here... I'm just wondering because what I see it does is that instead of image source tags you tell it data-defer source, so you're changing the attribute to data deferred source instead of source.

What does that do to people that care about validation, W3C validation?

Manuel Lemos: Well, I think from what I know any attribute that starts with the word data is automatically valid.

Michael Kimsal: Oh, is it, wow, I did not know that. But I didn't see any reference in their document about that as to what it...

Manuel Lemos: Because it's basically...

Michael Kimsal: Because everybody knows about this except for me.

Manuel Lemos: I was not going that way but somehow that's it. It's not a new thing, from what I know it's something that was defined a long time ago in the HTML standard, and so every time you want to add a custom attribute to your HTML you can use those data...

Michael Kimsal: Prefixes.

Manuel Lemos: ...attributes.  Yeah, anything that starts with data.

Michael Kimsal: Yeah, okay.

Unobtrusive Notifications with Humane.js (15:20)

Manuel Lemos: Well, moving on with the podcast, now we're going to talk about Humane.

Michael Kimsal: Humane.js

Manuel Lemos: Did you look into that?

Michael Kimsal: I'm looking at it and it just seems to be a pile of... it doesn't work, I don't know what it's supposed to do but it's not doing...

Manuel Lemos: You need to click on the areas.

Michael Kimsal: Oh, when I just changed select theme there was some little thing that would flash at the top for a moment and then it went away, so I thought it was supposed to be doing some animation and it's not. Okay, so I have to follow the instructions.

Manuel Lemos: It's nothing special, it's just a few effects for the way you present messages to the users instead of the old ugly alert box you can use nice effects to present messages to the user that they are shown, and they also automatically fade away and the user doesn't have to be bothered to click on them.

Michael Kimsal: And now that I see how it works it is interesting. I've got a project that I'm supposed to be revisiting the UI, and this has been one of those things that's, user notification, what's a good way to do this. Now that I actually followed the instructions it works.

Man, Humane.js guys if you could make something that works even if I don't follow the directions it would be much more humane. The biggest limitation I'm seeing of this app is that it only works when you follow its directions.

Manuel Lemos: Right, but you are a developer, you should figure it out now for your sites' users, you can always use one of these ways of presenting and not receive messages to show something that is relevant for the user.

Michael Kimsal: I was thinking of just emailing them every time something happened, like you've updated your record, we've deleted your record, you've clicked on this link, and so on.

Manuel Lemos: That would be kind of slow, right?

Michael Kimsal: Yeah, yeah.

Manuel Lemos: But it will get there.

Michael Kimsal: There's a strong audit trail there.

Manuel Lemos: What do you mean?

Michael Kimsal: Well, if I emailed them on every single click then they have their own record of what exactly took place.

Manuel Lemos: Yeah, but this is just to be a nice replacement of the old alert boxes.

Michael Kimsal: It does look nice, yes.

Manuel Lemos: Well, at least some of the types of effects look nice, at least for me.

Play Amiga Computer Music Formats with FlodJS (17:55)

Manuel Lemos: Well, moving on with the podcast, another library... well, actually I found this very interesting because I'm sort of old, at least compared with a good part of our audience, and this brings me back to the 80's and 90's, early 90's, late 80's, to the old Omega computer days.

Michael Kimsal: Miami Vice.

Manuel Lemos: Michael, did you have an Amiga computer?

Michael Kimsal: I did.  

Manuel Lemos: I don't know if you remember, at least from what I remember back then there was this practice of everybody exchanging music being composed by people that enjoy music and use the Amiga computers, and they used what they call the tracker programs like Sound Tracker and others.

Michael Kimsal: Hmm-mm.

Manuel Lemos: Now there is this Flod.js library that is able to read many of those music file formats and play them in a browser which supports the Web audio API, and this is interesting because now you'll be able to play those very old tunes of the 80's.

Michael Kimsal: But I have to choose a file that it knows like a SID player of a SID file. I don't have any of these old files.

Manuel Lemos: There are plenty of sites on the Web that have those files.

Michael Kimsal: It doesn't play MP3.

Manuel Lemos: Yeah, that was not the purpose. We already talked about another library that plays MP3. Well, it still uses the Web audio API which seems to be only supported in the latest Chrome version.

Michael Kimsal: How's everybody going to hear my 18 Wheels of Love MP3 file? Yeah, they can't play it on this.

Manuel Lemos: Well, that was not the purpose. Well, I just thought it to be interesting to comment about it if there are any old-timers like myself that used the Amiga computers.

Michael Kimsal: You'll need to turn up the volume for them when you get to this part in the podcast because they won't be able to hear it because they're too old.

Manuel Lemos: Not that old.

Michael Kimsal: What?  What?

Manuel Lemos: I think we are not that old.

Michael Kimsal: You'll need to type in a bigger font for me, please.

Manuel Lemos: Yeah, I think so.

Fast PhoneGap App Development with Mulberry (20:22)

Manuel Lemos: Anyway, moving on with our podcast.

Michael Kimsal: I wanted to mention one.

Manuel Lemos: I had in mind for next in line.

Michael Kimsal: Yeah, okay, that's a very smooth move there how you just casually transitioned it over as if you were going to.

Take two.  A tool that I've recently come across is Mulberry, and this is a toolkit from a company called Toura, and a couple of friends of mine, it's awesome I can just namedrop like this, Matt Henry and Rebecca Murphey both work at Toura now, or work with Toura, I'm not sure exactly what the relationship is, but Toura is a company I think based up in Boston that does a lot of mobile app development, and what they've done, and Rebecca I think has taken the lead in a lot of this, is crafted this toolkit that is a... I'm trying to think of how to describe this, it's a very fast way to get up and running with PhoneGap.

And the easiest way for people who are familiar with these technologies to get this is to say Rails for PhoneGap, it's very Rails-ish command line utilities, Mulberry scaffold and application, Mulberry create a page, it creates an entire structure for you, a default skeleton application structure that can then be compiled into a native IOS app or a native Android app.

Manuel Lemos: Yeah, it's sort of a Rails for PhoneGap applications.

Michael Kimsal: Yep, yep, and I got a hands-on demo from Rebecca a couple weeks ago at our local JavaScript Meetup and it's pretty slick, I've got one project in mind that I'm thinking of using this on if I can get time by end of January or February.

I've played with a couple of local things, but I've got an actual client project in mind to use it on. It's pretty straightforward, there's one neat thing if I can play with more I may talk about next month, but it is a remote debugger, actually you wire up your app into a remote server, I think Toura runs them but you can run your own as well, and then from your browser you connect up and then in your browser it looks very much like a step-by-step debugger to debug through your application.

So you could put the app onto your mobile device and then debug it through the Web, debug it in a browser, step-by-step debugging, it's pretty slick. So, I only saw a quick demo of everything, and as demos go a lot of times... I saw some neat demos at ZendCon a couple months ago too.

I don't think Mulberry is going to allow you to make every single kind of app you want, it seems to be targeted right now for a few core use cases, but it seems to make it actually almost fun to build basic apps like that, so I'm really on the lookout for more stuff coming from the Mulberry project, but also I'm hoping this will inspire other projects to make their technologies as slick and as packaged and as easy to use as Mulberry, but that's maybe all I'll say for this month.

Manuel Lemos: Yeah, well, if anything interesting will come up... I'm not onto mobile development world, but if you are more connected to that type of development please keep talking about those new things that may come up to increase the productivity of people that work, in this case it's PhoneGap. Is it specific for PhoneGap or is there anything for...

Michael Kimsal: Right now it's just PhoneGap, it's built on top of PhoneGap, when you get Mulberry you're getting PhoneGap and Dojo and I think jQuery as well, so it's bundling a lot of tools together and using them in a standard way, much like Rails or Grails or something else, it's putting a nice command line interface and some default standards on top of some disparate tools, so it's nice.

Retrospective of the JavaScript World in 2011 (24:40)

Manuel Lemos: Okay. Well, moving on with the podcast, basically we covered several interesting topics of libraries and stuff that has been happening this month of December 2011.

And now as we have planned earlier it's time to do a recapture of the year 2011 in the JavaScript world. Michael, do you want to start? What was more relevant for you that has happened in 2011?

Michael Kimsal: Oh, gosh, when we first talked about this I was initially thinking, well, this project came out, that project came out, and thinking about it there was a whole lot of specific individual projects that have come, and some have stuck around and some have morphed and gone away.

But to me the bigger trends that continued, I think these were bigger things and that has been the continued improvement of JavaScript in browsers, kind of to tie-in with what we were talking about earlier with the incremental upgrades, Chrome and Firefox  both now are pushing for rather quick iteration, and hopefully we'll see that trend happen in some other browsers, most of the major browsers, to get out small incremental improvements to the entire browser, but certainly JavaScript is a big portion of that.

So the speed improvements that we've seen across the board of JavaScript engines I think have helped make more client side apps a reality, and it's almost passé, I think a lot of people listening to this sort of stuff, this podcast and other podcasts like it, probably are fairly ahead of the curve anyway, so me talking about this saying oh this is a great thing, in some sense it feels like, yeah, we've been seeing this for a few years, it's nothing all that great, but it's been more there's such a.... with IE or issues of IE6 lessening as well too, the average developer has more leeway to tryout and to use more advanced JavaScript in their work.

So, while some of you listening would say I've been doing this two or three years ago and I've been on the cutting edge, the rest of us are now getting to catch up, and I say the rest of us, me, but other people that I meet in their day-to-day work we've been able to take advantage of much more powerful JavaScript libraries, and these libraries are more powerful because the engines themselves are powerful.

The other I think big thing that happened in the last year has been the solidification of server side JavaScript. Node.js has really taken off as the hotness, maybe we'll see some other competitors in that space, certainly we've seen Rhino and some other ones before, but the idea of JavaScript on the front and the back, server side, client side, at the same time has an appeal to some people.

And I think we're going to see more people taking advantage of the ease of concurrency and the ease of, I want to say long-polling, but socket connections and things that just aren't really possible with more traditional old lamp stacks, Apache stacks, to be able to do more complex concurrency with a JavaScript based server.

And I don't even want to make too many predictions other than I think 2012 is going to be pretty interesting in that respect.

So those are kind of the bigger meta-stories that I've seen over the last year without getting into things like Mulberry is really neat, but there's probably 50 of those things that I could point to, probably one or two things a week, oh, cool project, cool project, but the overall trend is more of these cool projects are happening because the engines are getting better, we're seeing less of a stranglehold of IE6 in the marketplace that are allowing more people to take advantage of the cool things coming out too.

Manuel Lemos: Yeah, well, basically that's one of the things that I also would like to highlight is I think it was Google that started this trend of iterating browser releases with high frequency. 

Mozilla people got the point and they are now also iterating quicker, I don't know, but I also get this impression this Microsoft is also trying to iterate quicker, but probably not as quick as their competitors, so we don' t see too many Internet Explorer releases, but they are moving on, they are not stopped like they somehow did with IE 6 for years.

Michael Kimsal: Hmm-mm.

Manuel Lemos: And this is important for the JavaScript world because many of the cool things that we are seeing depend on implementation of the JavaScript APIs that were already specified.

There are standard documents to define them, but the browsers are not yet embracing them. And this leads me to another important thing that happened in 2011, actually not a long time ago, which is the announcement from Adobe to sort of kill the development of Flash for mobile devices.

So basically they decided to not develop new versions, although they just released I think it is probably the last version of Flash plugin for Android 4, Ice Cream Sandwich, which was expected because somehow the market that has devices running Android expect support for Flash because it used to be one of the advantages of those devices when compared to IOS devices from Apple because Apple sort of banned Flash on their end.

And, well, my impression is that Adobe also agrees to kill Flash, but they cannot kill the marketplace they have built and many companies rely on which is the development of tools and components based on Flash that run on browsers.

I don't know until when that market will last, but I think it is positive from Adobe to know that that market will cease to be significant. It will not be ever killed permanently, there will always be applications and sites that will use Flash, but I think once they have told everybody they ceased the development, at least for mobile devices, I think the next announcement will be they also cease the development of new versions for browsers, regular browsers, for desktop computers. 

Michael Kimsal: I suspect that... personally I suspect that it may not be a complete ceasing, I don't think they would go that far until they have a replacement, a replacement technology, and if you're building something with their tooling, if you're building Flash Builder, there will be, I'm just making this up, but Flash HTML 5 Builder or something like that.

And if they have a story that is reasonably compatible such that if you're using, basically developing current Flash stuff six months or a year from now and they say oh, well, the latest builder will now generate this, it generates concurrent versions of Flash, or there's a slow migration in the Flash player itself to use more native browser component rendering, so the Flash is not totally Flash anymore, it's a hybrid.

I could see them... I understand there's a lot of technical issues with that, but I could see them adopting that quicker. They've got too much of an influence in that market right now, and it's probably a fairly cash-rich market for them to just say we're not doing this anymore.

Manuel Lemos: Yeah.

Michael Kimsal: And there's value in having tools that allow you to do what they do, it's just that the end result of using those tools two years from now but not be a traditional Flash file, it might be something else.

Manuel Lemos: Right. Well, I don't know if that... I think that moment will happen sooner or later, they'll stop developing the Flash plugin also for desktop computer browsers, but as for a complete replacement of what Flash does I don't know if that will happen, at least with the same advantages.

Actually we commented about that in a previous podcast, specifically about certain features that are not yet fully available in all browser that say that they support HTML 5 API's, like for instance video recording and audio capture, but there is one, well I'm not sure if we can call it a feature, which is the fact that when you generate an SWF file it's sort of an encapsulated binary that it's not ... well, I'm not saying possible because it's not impossible, but it's not easy to steal the code of the components that are inside.

Although there are disassemblers, it's not something that will get you exactly the original source code. And I don't know how far you can provide the same in JavaScript, can you provide JavaScript file that is so well encapsulated it makes it hard for whoever wants to take advantage of something that is inside a JavaScript file to steal it?

Well, I don't know if you can think that JavaScript will ever replace Flash in those terms. I don't know if you ever thought about that from that perspective.

Michael Kimsal: Well, I think it could, certainly Adobe as an example has a lot of experience writing all the code to deal with video and audio and all of those features that are either missing or not very well done in HTML 5.

There's not a whole lot stopping them technically from releasing a lot of that and contributing it to some standards committee, and they've open sourced or they're passing over some their stuff over to the Apache Software Foundation, they could probably do more by contributing more of that so that all the major browser people could get that code and put it in their JavaScript engines to have well-tested code, it would certainly be re-implemented, you know what I'm saying, or maybe I'm way off base there.

Manuel Lemos: Well, actually I was not thinking exactly about the code whether it runs or not, I was thinking more about those people that develop Flash components and they sell them in the sort of closed source format.

Michael Kimsal: Oh, I see, I'm sorry. 

Manuel Lemos: I think it's a significant market there, and I know there are lots of sites that sell those components and there people making a living from selling those components, and they do not supply the source code, although it's not impossible to reverse engineer the...

Michael Kimsal: I see what you mean, but my guess is that probably many of those people will be looking for some other avenue in the next couple of years because the writing's on the wall, they're not going to... most of them will not be doing this and making the same amount of money five years from now at that.

Manuel Lemos: Yes. Well, life moves on, they cannot expect the chicken of the golden eggs to last forever.

Michael Kimsal: Sure.

Manuel Lemos: If they are making a living from that, well, my advice is for them to get ready for the world to move on and drop Flash altogether, and all of a sudden their market will be much smaller if existing at all.

Michael Kimsal: Yep.

Manuel Lemos: Well,...

Michael Kimsal: On that happy note.

Manuel Lemos: Well, at least it's a happy note for JavaScript fans, and many of them are Flash haters. Well, personally I'm not a Flash hater. Flash had its place in the history of the Web, and we never know how different the Web would have been without Flash itself.

At least Flash filled a hole that existed many years ago when there was no way to achieve similar effects even with JavaScript.

Michael Kimsal: Java applets, but anyway.

Manuel Lemos: Well, in the end what succeeded was Flash, and just thinking Flash video playing became very widespread after Flash plugin became quite disseminated, I think just seeing it from that point was quite... I think it was quite important, but I think now it's time to move on without Flash.

The Latest JavaScript Objects Published in the JS Classes site (38:24)

Okay, moving on with our podcast, I think it's time to talk about the latest JavaScript objects that were published in the JS Classes site. Well, we're recording kind of early in the month and there were not yet many components published recently.

Michael Kimsal: So, instead we will...

Manuel Lemos: We can always comment on the three that were published this month and move on with commenting with a few components that were published this year, 2011, that we think were more interesting. We cannot comment on all of them, but at least we can comment about a few that were more outstanding.

Michael Kimsal: Well, this month what do we have here, we've got the first one I see is from... I can't pronounce the name, let me read it slowly, René Teinze, am I saying that right, from Germany.

Manuel Lemos: Well, we never know how that is pronounced in German.

Michael Kimsal: This is a file directory listing object that will go scan, saying that it would scan through a directory, but I'm not sure if I was reading that correctly, if it's actually hitting the file system or is it just going through a list of... a string list of files?

Manuel Lemos: I also had that doubt, but then analyzing the code basically what it does is just a trick that will list server side image file. It creates image objects and with URLs that follow a certain pattern that is given, and if the image is loaded successfully it reaches the conclusion that the image exists.

Michael Kimsal: Ah, that is a trick.

Manuel Lemos: It iterates over a range of numbers in the URL that is actually a template. It replaces a certain placeholder with numbers and iterates over a range of numbers to see which can be opened as images.

So that's how it figures automatically if the images exist because otherwise the browser side would not have a way to guess which files exist on the server side. And it's an interesting trick, I don't know if it's very useful in practice, it's probably for a very specific purpose that that author, René, had a certain need for, but it's interesting anyway.

Other than that, we also have Isoworld, yet another great class from Arturs Sosins which is quite interesting, it uses CSS transforms to pick three page elements and each of them will act as faces, visible faces, of a cube that will be displayed in sort of an emulation of a 3D perspective isometric perspective to make it look like it is a 3D solid, and it will be a cube or something like that.

And it gives a nice effect, I think it even lets you define another element that will act as the ground, and another that will act as the shadow of the cube. So, what Arturs did is to adjust the CSS transform parameters to give this nice effect of a 3D solid.

Michael Kimsal: Wow, all that's done with CSS, that is wild.

Manuel Lemos: Yeah, well, JavaScript is used to adjust those...

Michael Kimsal: Okay, well, you know what I meant. It's not... I thought it was a canvas trick at first but, no, I get it, it's just transforms, wow.

Manuel Lemos: It's interesting. Well, I don't know what you can do in practice to make use of this other than give a very impressive effect of something that you want to put in your pages. I don't know if you can also use some rotation to make the cube rotate, well, in that case I think you need more than three faces of the solid, but still it's impressive.

Michael Kimsal: Yeah, I think it would probably give... certainly just now it's giving me some ideas about things that could be done with CSS transforms...

Manuel Lemos: Exactly.

Michael Kimsal: ...that I would never have thought of that. Interesting.  Very interesting.

Manuel Lemos: Well, as long as your browser supports CSS 3 transforms.

Michael Kimsal: Again, Netscape 4, it's awesome.

Manuel Lemos: Well, Netscape 4, that's like, what, twelve years ago?

Michael Kimsal: Shh, yes, good enough, good enough.

Manuel Lemos: Well, and that is one of yet another of the three classes that I would like... it was released, so the third one was an image selector object that it is also interesting in the sense that it lets you pick an image from a list and use select inputs to switch between the images, but once you click to a different option of the select list it already shows the image associated with that option, so you don't have to reload the page to see a preview of the option being... of the image associated with that option.

And this is yet another great class from Arturs Sosins. And well this is the third of the three that were published this month.

Michael Kimsal: So far.

Manuel Lemos: Yeah. And, well, now moving to the selection of classes that were published in 2011, Michael, which ones do you think were probably more outstanding in your opinion?

Michael Kimsal: Well, I'm not sure how much my opinion counts, but there were a few that... there's one that I had remembered from earlier this year from Jean Baptiste Demonte which was the Google Map Marker tool, or class, to let you more easily place custom markers over Google Maps.

It's not something that had never been done before, but it was... it just for some reason kind of stuck out with me, stuck in my head, as we were putting this list together I'm like oh, yeah, I remember that one, that one it just stuck with me, that's all.

Manuel Lemos: It's interesting because it also supports clustering of markers which is a very useful function because when you have many markers to display and they are concentrated on a certain region it just shows you a simple mark. That is important for Google Maps API because if you show too many marks on the page it becomes very slow.

Michael Kimsal: Hmm-mm. There was another one that... I think this is a... oh, no, no, no, I lost it, yeah, this was... you said I think we talked about this before but I don't remember us talking about this, this was the Spin Wheel, jQuery Spin Wheel, a jQuery plugin that builds a spinning wheel like a game thing, like from game shows, and it does it all in Canvas, and you can add... the demo page lets you add multiple names, spin a wheel and it rotates the wheel pretty quickly, and all the names are rotated in an arc.

And when I was looking at this I was digging through the code a little because I didn't need to build specifically a spinning wheel like this, but I had needed to... I was building a demo for somebody and I was trying to do something that looked like a slot machine, like spinning things, that's what I first thought, those kind of spinning wheels.

But having tried to do that myself it made me realize how difficult some of this stuff is, and this is one of those that when I look at the code of anybody who makes good JavaScript stuff, good reusable JavaScript stuff, I'm always in envy because I've been doing this for a long time and I don't feel like I'm getting that much better.

I mean I know I am compared to five and ten years ago, but I don't feel like I'm getting that much better, and when I look at somebody else's code it's always kind of fun to see how did they do... oh, that's how you do this, that's how you do that. So, that was another one that kind of jumped out at me as interesting from this year.

Manuel Lemos: Yeah. Well, on my part just also I would like to add a couple of other two classes, but first just to give credit to who should be mentioned is Ron Yu of the United States that developed that Spin Wheel class.

Michael Kimsal: Oh, Roy, it's Roy Yu, yeah. Thank you, Roy.

Manuel Lemos: Sounds Chinese this name. But the two classes that I wanted to mention, well actually we also commented about them earlier, one of them is JSGet from Fabian Vogelsteller, I'm not sure if this is pronunciation is correct, he is from Germany.

And basically what the class does is something that is very useful for single page applications that need to detect when you use your browser button or use maybe a link that points to the same URL but with a different hash, and since that will not make the page reload the application needs to detect that to be able to update the screen, and this is very useful for single page applications, as I mentioned.

And the other class that I also would like to highlight for this year is Light Source, one of many great classes submitted by Arturs Sosins, and this one basically also achieves a neat effect on the screen which is basically to adjust several attributes of certain page elements like the color and the shadow of the page element considering a virtual light source which could be moved around the page, and depending on the position of the light it will change the shadow of that element, not just the intensity but also the direction.

So if you move to one side it will show the shadow to the opposite side, and it gives a very nice effect, a very impressive one. I don't know what kind of uses you could do with this kind of component, but it certainly gives a very impressive effect you can use to make your site users be... get the attention of them when they get to your site pages where you would use a component like this.

Michael Kimsal: Oh, you know, you could put a light source against a 3D isomorphic box and put a shadow that way.

Manuel Lemos: Yeah. Well, that would be a very interesting combination of components.

Michael Kimsal: Yes, Arturs, get on that, make that happen.

Manuel Lemos: Now you just gave him yet another idea if he didn't ever think about that already. Well, greetings to Arturs for this and many other components, he's a very valuable contributor from Latvia, and I hope he can continue to have time to submit more of his components next year, and the same goes to other contributors of the site.

Contributors Reports E-mail Messages (51:00)

Manuel Lemos: And just also related with the components and the authors that submit to the site, I would like to comment very briefly on a feature that was just released just this week when we are recording, which is still before Christmas.

And basically it is a report message that is sent by email to each author of the site, that we would like to encourage somehow, so they can not only contribute more classes but also update the current classes that they have submitted, but they probably forgot to send the new versions, the new developments that they made.

And this report message basically shows some information, it's basically a personalized message that shows how each author is doing in terms of rankings, different rankings of the site, the number of users that they have since the beginning, since they sent their packages, as well in the latest week.

And other than that the report also gives some advice on how they can improve their contributions, so they keep raising in the rankings, and I hope with this it encourages the authors to send more and better packages and participate in an even more positive way for the benefit of the whole community.

Upcoming Articles on the next JSMag magazine issue (52:28)

Manuel Lemos: Well, practically reaching the end of our podcast, Michael, I think you wanted to comment something about... I don't know if you have already commented on the topics of the next issue of JsMag Magazine.

Michael Kimsal: Well, I don't think I have the stuff right in front of me, and it's a little early in the month. Let me see if I can pull it up. We had something last month that should be in this month, I'm hoping that it is, but we should be having..  we talked to Dino Gambone last month, maybe two months ago, that was last month, and he was supposed to have something in a second series in his offline mobile app development piece, but that didn't get in so we should have the for January.

And we have another piece on... another continued series from Mike Schwartz on server side JavaScript, he's going to be talking about I think some ORM tools for server side JavaScript, potentially a piece on closures, and another couple things which I'm not sure we'll have yet.

So, kind of it's a little early, normally we're kind of solidified at this point, but December is always a little rough because everybody's taking time off for the holidays, so it's always a challenge.

And that kind of brings me up to as always, we're always on the lookout for good writers or maybe you're not a great writer, you don't think you're a great writer but you've been working on some cool stuff or you've got some neat things that you'd like to share with other people, we can help you do that through JsMag and we pay. We have editors that you can work with to help clean up if English isn't your first language, usually we can help you get past that.

Manuel Lemos: Well, other than that, I wonder if you would like to mention any of the authors that sent more contributions to your magazine this year. 

Michael Kimsal: I don't have a list offhand of all, certainly Mike Schwartz and Dino Gambone have been great contributors over the past year. David Calhoun has been doing a really good job of keeping the news up-to-date, both in the magazine, the PDF magazine, but also a jsmag.com, he's done a pretty good job of keeping our news column up-to-date there.

Well, it's actually hard for me to go through and just pick out names right now because there's... well, Jean Baptiste Demonte was actually a JS Classes contributor, and because we ended up talking he gave us a really nice piece too.

So we've had a lot of great... probably 40 or 50 authors over the last year, and then the same for GroovyMag, it's just great to get to work with so many sharp people.

Manuel Lemos: Yeah. It will always be hard to mention everybody, but I'm sure the other people who were not mentioned will understand.

Lately in JavaScript podcast in Portuguese (55:41)

Manuel Lemos: Well, anyway, we are practically at the end of this podcast, I would just like comment on one thing is that I'm going to try, and I would like to emphasize try, to have a Portuguese edition of this podcast, Lately In JavaScript.

I don't know how I will call it, but if all goes well and I can manage to make time also to record that podcast every month, and I will be recording the podcast also once a month and with the help of Filipe Moura we'll have a sort of Portuguese version of the podcast talking about pretty much the same topics related with JavaScript, but probably more focused on what goes on in the JavaScript scene in Brazil and probably Portugal as well because the podcast will be spoken in Portuguese.

JavaScript Plans for 2012 (56:40)

Manuel Lemos: And other than that, next year I plan to work on a project to implement a new service that I cannot comment on yet, but a part of it will be written in Node.js, at least that's my intention, I hope all goes well and this decision to make that part in JavaScript on the server, actually that part is not web related, but as I mentioned I cannot give more details already, probably in a few months.

But I hope that will also give me time to develop more general purpose JavaScript components that I will be publishing in JS Classes.

Michael Kimsal: Cool.

Manuel Lemos: Well, any JavaScript plans for you next year that you would like to comment on?

Michael Kimsal: Nothing that advanced, probably I still have a lot of Grails and PHP work ahead of me for several months, but possibly some of that work with Mulberry, playing around with that, and probably just looking for more things to add in like Humane.js, smaller little widgets and libraries that I can use to add the nice UI effects that I want to have.

Conclusion (57:58)

Manuel Lemos: That's great. Well, on that note, we have practically ended yet another edition of the Lately In JavaScript podcast, 2011 was a great year, I hope 2012 will be even better, even though knowing that the world is expected to end.

Michael Kimsal: Stop, oh, stop.

Manuel Lemos: Okay.

Michael Kimsal: It will be better.

Manuel Lemos: That's what I saw in a certain movie that somehow gave a simulation of what some people expect to happen. Of course I'm not a believer but that's another discussion.

Michael Kimsal: Not a believer, yes.

Manuel Lemos: Well, Michael, thank you once again for your participation, not just this episode but all the episodes of 2011.

Michael Kimsal: You're welcome.

Manuel Lemos: I hope I can count on you next year as well.

Michael Kimsal: Sure. Let me say palavra de despida.

Manuel Lemos: Okay. We will translate that he's a friend. Okay, thank you again, thank you

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

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 Retrospective of the ...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)