JavaScript as Base of Windows 8 Applications - Lately in JavaScript podcast episode 23

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


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

Windows 8 applications will be using the WinJS library to script Windows applications using JavaScript code. That was one of the main topics discussed by Manuel Lemos and Michael Kimsal on the episode 23 of the Lately in JavaScript podcast.

They also cover other interesting topics like using AngularJS for data binding user interfaces, JavaScript libraries to flip Web page content like book pages, genetic algorithms implemented in JavaScript, and a Gantt chart editor JavaScript library.

Listen to the podcast now, or watch the podcast video or read the podcast transcript to learn more about these and other interesting JavaScript topics covered in this episode.

Loaded Article


Listen or download the podcast, RSS feed

Watch the podcast video

Read the podcast transcript

Click on the Play button to listen now.

Download Size: 29MB Listeners: 1386

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

View Podcast in iTunes

RSS 2.0 feed compliant with iTunes:

Watch the podcast video

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

Show notes

  • TurnJS library for turning pages like a book
  • Book Block library to flip content like book pages

Read the podcast transcript


Introduction (00:20)

JavaScript blog from Mozilla (2:24)

Data binding user interfaces with AngularJS (5:47)

JavaScript as Base for Windows 8 Apps (14:26)

JavaScript Libraries to Turn Pages like a Book (25:19)

Genetic Algorithms in JavaScript (29:38)

Editing Gaant Charts in the Browser (32:43)

Latest JavaScript Objects released in the JSClasses site (34:43)

Upcoming Articles in the JSMag magazine (48:00)

Conclusion (51:16)

Introduction (00:20)

Manuel Lemos: Hello. Welcome to the Lately In JavaScript PodCast. This is episode 23, and as you may have noticed, we have here our favorite rockstar….

Michael Kimsal: Yeah.

Manuel Lemos: Michael Kimsal. This month...…

Michael Kimsal: Oh, man!

Manuel Lemos: Just Michael, not the special K

Michael Kimsal: No! No, actually, it's, yeah, Michael lowercase Kimsal, lower case D. That's my inner city name when I'm rapping.

Manuel Lemos:  [Chuckle]

Michael Kimsal: It brings grammar to the streets. It's kind of making English fun again. It's making it hip and cool, lower case D.

Manuel Lemos: Yeah, be simple.

Michael Kimsal: Peace out.

Manuel Lemos: Be minimalistic.

OK, I was going to ask you how are you doing but I can I see you are fine as always. Is there anything to comment about how are you doing besides well…...

Michael Kimsal: I'm feeling… [Guitar Strum] I'm kind of feeling [Guitar Strum]. I would rather feeling [Guitar Strum]. I rather feel major or [Guitar Strum] but I'm kind of feeling [Guitar Strum] minor. And then, maybe [guitar strum] another minor.

It's a gray day here in Raleigh. I would turn the camera around but I'd probably knock over my Red Thunder, first off.

Manuel Lemos: Yeah.

Michael Kimsal: This is the cheap stuff from all the…... So, it's kind of a gray day and I've got a lot of work that I'm behind on. So I'm kind of feeling a little minor key, little sad. Not the minor-est of the keys but certainly, not totally major.

Manuel Lemos: OK, I can understand. I hope this podcast will cheer you up. And we are going to start here with the regular batch of...…

[Guitar Strum]

Michael Kimsal: There you go.

Manuel Lemos: … JavaScript topics to talk about and we are going to start precisely…. I was trying to open it in the right page.

Michael Kimsal: You got to open to the right page, not to the left.

Manuel Lemos: Right, well…

Michael Kimsal: Should I sing that? You want me sing that?

[Start Song]

To the left, to the left. Put your stuff at the box to the left.  

[End Song]

JavaScript blog from Mozilla (2:24)

Manuel Lemos:  I had it opened but I closed it. But we are going to start talking about a new…...  well, I'm not sure if it is so new. It's probably just different grouping of categories of articles in the blog of Mozilla site.

Michael Kimsal: [Verbal Noise]

Manuel Lemos: And they have…

Michael Kimsal: Oh, there you go. It's up on your screen now, sharing it with me.

Manuel Lemos: Well, it seems they decided to have a special category for JavaScript in their blog to talk about whatever is related with JavaScript, mostly with Firefox.

It seems that they probably want to get some attention– you know, attention to whatever they are doing in Firefox related on JavaScript. And on that day, they have announced just recently, a couple of weeks ago, the new JIT engine that they are going to use starting Firefox 18.

Michael Kimsal: Which I'm running.

Manuel Lemos: Yes, I was going to ask you precisely about that. Anything you noticed different? Any great speed improvements that you can tell that are really making a difference?

Michael Kimsal: No.

Manuel Lemos: Not really?

Michael Kimsal: No! Nothing. I could probably stretch that out for a couple of minutes – we need filler here,– but no. I've been on the release, sorry, the Nightly build channel so every few days, it does something. So likely, some things are faster but it doesn't feel all that different. I don't notice any major changes day to day.

So, if I went and used something from a year ago, it's probably faster but I don't feel it.

Manuel Lemos: Well, I suppose probably it had something to speed up the JavaScript engine as before, right? Or this is probably not a great improvement in terms of speed but probably different approach in the JIT engine? Because I was with this impression that they already had a JIT engine in place but probably I'm confusing with Chrome.

Michael Kimsal: No, no. Yeah, it says there right there, their newest is JIT. They've had TraceMonkey. They've had other stuff. They've got JIT stuff or have had it for awhile and just making improvements on it,  which is why I think I'm not noticing massive huge…

Manuel Lemos: That explains it.

Michael Kimsal: Yeah.

Manuel Lemos: As of now, I was confused wondering if they didn't have JIT engine before. But, well, OK, other than that, do you think it would make any difference in other aspects, maybe memory consumption or something?

Michael Kimsal: I hope it does but I'm using 18 right now and it doesn't… I use it, it's just not… I should maybe put a comment on their site saying it's not floating my boat.

I don't know, I'd say that as somebody, I like Firefox. I use it a lot. It's just I haven't noticed any major stuff, though. If I'm doing the Nightly build, they could have some extra tracing and stuff on, maybe I got to go flip some switches to get it to go faster. I don't know.

Manuel Lemos: But…

Michael Kimsal: Every version gets better.

Manuel Lemos: Well, I'm just hoping to notice something about what is better in there.

Data binding user interfaces with AngularJS (5:47)

Manuel Lemos: Well, anyway, moving on with the podcast...

Michael Kimsal: There you go.

Manuel Lemos: Michael, you want to comment about AngularJS that you have been using lately.

Michael Kimsal: Well, I was just going to sing about it first.

Manuel Lemos: OK, go ahead.

Michael Kimsal: [Guitar Strum]

Well, now you keep pronouncing it JIT and I was just going to sing that song.

[Guitar Strum]

Michael Kimsal: But I can't find my mojo. Maybe, I'll get to it later. I'm a big McCartney fan so I thought I could kind of adapt his Wings hit. Any who, Angular, I'd probably write a song about Angular too.

Manuel Lemos: [Laughter]

Michael Kimsal: Let's see, oh, I'll do it minor.

[Guitar Strum]

Manuel Lemos: This the cultural moment.

Michael Kimsal: [Start of Song] AngularJS, you  made me happy. AngularJS. Everything else is crappy. [End of Song]

Yeah, I can't really. I got to work on that. Well, it's philosophical, too. It works on multiple levels, kind of like AngularJS. I have a philosophy degree, so I have to be deep now and then, I'll lose it otherwise. I mean, I will lose the deepness.

On that, while I'm waiting for that to come up, I'm going to hit my screen share and I'm  going to say… I'll try to find out what I'm going to share with you first.

Manuel Lemos: Yeah.

Michael Kimsal: Spotify. No, I'm  going to share… I'm just looking for...… There we go, there we go. AngularJS….

Oh, I'm sharing my screen. Are you seeing my screen?

Manuel Lemos: Yes, that's coming.

Michael Kimsal: OK, because I still see you and I kind of don't enjoy that too much. I prefer when the big screen….

Manuel Lemos: Sorry.

Michael Kimsal: Are you seeing my screen now?

Manuel Lemos: Yes, it's OK. Go ahead.

Michael Kimsal: Will that be recorded as my big screen?

Manuel Lemos: Yes.

Michael Kimsal: That is sweet.

Manuel Lemos: I think so.

Michael Kimsal: OK. The AngularJS – and I started using this a week or two ago. Then, I found out…  I mean, I didn't even see it on the screen initially but this is actually from Google. It's a project from Google.

And I don't know the landscape of the latest generation last couple of years too much - Amber and Knockout and some other stuff. Some of these things we've had some write-ups in JsMag about. Knockout seemed to be pretty popular amongst some .NET people for a while.

But Angular, it's probably easiest just to look at some code. Maybe it will make the screen just a little bit bigger. And they have a nice little video tutorial. The docs are OK, too. To do advanced stuff, it's takes you awhile. I mean, for me, it's taken me awhile to get into the nuances. But the core idea here…... Can you see this Manuel?

Manuel Lemos: Yes.

Michael Kimsal: OK, so, really the ideas are marking up my document directly. And then, the Angular code base, when it runs, it scans that and it wires up some events automatically.

So, I marked this whole document as an ng-app. They use ng as a prefix.  Down here, I have an input type, I can still have IDs and whatnot, but to work with Angular directly, I would say this is an ng-model and it's called "yourName".

I use this templating brackets syntax to say, "Hey,"yourName" should also go here." And if I was to run that, or as I'm running that…... You see that? You'll see it in a moment.

Manuel Lemos: No, I can see it immediately.

Michael Kimsal: Yeah. It hasn't shown up on my screen yet.

So I have immediately wired up this model and saying the source is here and it needs to be reflected here. Obviously, you can do more than this. Some of these examples are down here. This To-do list is kind of neat. You can see the mark-up of… Structurally, I've got… Everything in this DIV is going to be scoped under one controller, To-do Control.

And down here, To-do Control will automatically pass the scope.  So as I refer to proper values inside that block, I can refer them directly. But scope add to, that's a closure scope. 'remaining ()'  is a closure scope. To-dos is a JS block. If I go back to Index, I can see here that To-dos is referenced. And I'm going to repeat each one of those, going to do like basically at for each and each of these will be able to access the JSON data structure directly.

So, over here, if I say, "No, that's not done," I get two. If I say that's done or if I add another task or another To-do, I could say that's done. So, you can see there's got two of three, one of three. I got a lot of my plate now to do.

Manuel Lemos:  Yeah.

Michael Kimsal: So, anyhow, I'm not an expert of this at all. But it's been fun for me. To me, this is a good balance of good documentation,– so far, feels like good documentation – an active community.

But the tutorials here and the immediacy of both their interactive stuff and the ability for me, I was able to get stuff up and running in the first 10 minutes, which harkens back to, some people may remember my old podcast which I still do, but I interviewed people about SOLR. And just the idea of decent docs, decent out-of-the-box experience, I can follow a tutorial and have something working, clicking, in a few minutes. To me, that is really crucial for my adoption.

Other people don't work that way. They want to dive in to the source code or they want to read everything and they want to take their time. I'm not like that. So, for me, Angular has been an interesting experience so far and I'm going to be pressing for it with another couple of projects. I'm not looking to stop my…...

Manuel Lemos: So, what it does is data binding or is there anything else?

Michael Kimsal: There's actually a lot more. Just that the idea of data binding is an easy, quick thing to see.

Manuel Lemos: To show.

Michael Kimsal: If you look more, there's a lot of nice AJAX interactivity. There's some standard ways of creating your own reusable components and there's also a fairly clean way of handling client-side templates and reusing template code and binding data to individual templates as well.

So there's a lot there. We can probably do a whole podcast on it at some point, if either of us were actually good at it.

Manuel Lemos: Yeah.

Michael Kimsal: Or we could actually find somebody. If you're listening – I can't write,– YOU are listening and watching and are good with Angular or you think, "Dude, Angular sucks. Knockout is we're it's at," or Amber or something else that you want to come on in and kind of challenge or make me look an idiot, please do.  Join us and join the Hangout or join us on another podcast and I will take it like a man.

Manuel Lemos:  Yeah. Well, it seemed interesting. Although, just wondering if it would do more, something in-depth besides that because sometimes...… given that is a Google project, probably was expecting something more broad.

Manuel Lemos:  There is. There actually is a lot more to it. And just very briefly, one of the core things which is not of direct interest to me in the stage that I'm in right now, learning it. But everything is tested but it also has… It has been written to be testable. As you're writing code in it, your code can be testable. A lot of the examples in their documentation actually say, "Here's some sample code." And right next to it, in one of the tabs, "Here is the test for it and you can run this test directly." So, testing is really a first class citizen, or seems to be, in Angular so far.

Manuel Lemos: Yeah.

Michael Kimsal: There you go.

Manuel Lemos: Well, it's interesting. I can tell you that I was not really familiar with that, unfortunately. It's always a matter of time, because there's so many, many things being released in the JavaScript world that it's practically impossible to follow everything.

Michael Kimsal: And I have, in some ways, kind of shied away from diving into something too much. I am not going to be a world-class expert on Angular. But I made kind of  commitment to myself that I was going to use something out there rather than use hacky jQuery stuff that I normally do.

I thought I was going to try to invest sometime and get better with something and Angular was the one that struck me. I have two projects I'm working right that I'm working right now that I'm using Angular on and it's going to be fun. Painful, and parts of it are painful, but that's me; that's not the framework.

Manuel Lemos:  Yeah. Well, there's always some sacrifice when you are learning something new that probably is not obvious in the beginning.

Michael Kimsal:  Exactly.

JavaScript as Base for Windows 8 Apps (14:26)

Manuel Lemos:  Well, also talking about the new things, Windows 8 is about to be released in a few weeks.

Michael Kimsal:  Are we jumping right to Windows 8? You're trying to get all my stuff, all of my talking just out in one thing, aren't you? So people can just say, "Well, I'm going to skip from minute 4 to minute 14."

Manuel Lemos: [Laughter]

Michael Kimsal: Right?

Manuel Lemos: That's really…

Michael Kimsal: That's how I'm reading it. Yeah, I want to intersperse myself a bit so they can't skip over me.

Manuel Lemos: Yeah, well, that was just an introduction to the next segment on which you you'd be talking about something new regarding Windows 8. Because I'm not a Windows person, so it's probably not my type of thing to comment. But since, you have tried something, you want to comment about the relation of JavaScript with the Windows 8, right?

Michael Kimsal:  Yeah. I am trying to pull up something as well, too. Last Monday, I went to a presentation by Jim Duffy and Brian Hitney. Names may mean something to a few of you listening.

Brian Hitney has actually been a guest in the WebDevRadio podcast, I think, twice. He is the regional Microsoft Developer evangelist. His own focus, ventures, is on cloud stuff, Azure and things like that, but he tends to serve as a lot of developer relations stuff.  

And really, Windows 8, the smart phone stuff, and the tablet stuff and Windows 8 on desktop is the new thing coming. The desktop version is going to be released October 26th, so just about a month from now. So, it's really all hands on deck. Everybody at Microsoft is gearing up for this new release.

And, they gave a presentation on writing apps for Windows 8. It was interesting. I went because I like to learn about this stuff. I've heard a bit about this and so I got a lot of, watched some hands-on stuff. And it reminds me a little bit of the Palm Pre push a couple of years ago. JavaScript is nearly a first class citizen in Microsoft development now.

There are multiple stacks in the Microsoft ecosystem and I'm not an expert on most of them. Probably 99% of what runs in Windows XP and Windows 7 will still run in Windows 8. But they have introduced a new paradigm. It was originally called Metro and they got issues with that, so now, it's just the Windows 8 interface.  

But the way that you write applications or the way they want you to write most of the applications is binding the JavaScript. They have an intermediate layer, a set of libraries, it's called WinJS, which expose a whole host of Windows stuff down to some hardware stuff up through things that you may have done with all Windows calls. A lot of those you can do with WinJS now. 

So most of your applications can be… Or you can write full applications that are just in JavaScript and then deploy them. They have a whole app store thing coming, all that. But you can run this and your runtime is IE 10, and you have access to a lot of stuff that you wouldn't normally have in a regular, traditional browser.

So, again, a lot of these are very similar to people that followed the Palm Pre stuff, the Palm-OS, what became the HP stuff and all that. And I was a big fan of that idea and Palm never got traction with that. Maybe, probably, Microsoft will get traction with this.

Whether you like or not, it's going to be there. Two years from now, tens of millions of people will be running Windows 8 and one of the ways to write apps for that is using JavaScript in HTML and CSS.

So, many of us that have skills, you got JavaScript skills, you're going to be able to take that.

Manuel Lemos: Yeah.

Michael Kimsal: You want to run Angular, you want to bundle Angular and jQuery and some other stuff into a Windows app and push it out there, you can do that.

Manuel Lemos:  So how would that work? They provide tools to compile JavaScript into something?

Michael Kimsal:  It's not really compiling. I mean, there's a bundling, like an app that you would push out through the app store. Now, very similar to the idea of what's going on the IOS in the Mac world.

Anything, that you're doing with WinJS that you want to push out is going to have to be published through their app store, published and distributed. They're going to have some private app stores for corporations but right now, the push is very consumer-oriented.

So, build an app, compile it, push it out. The compiling is more zipping. I don't know offhand if your code would actually be visible or if it would be... –I didn't ask, I should have asked, if there– would there be an obfuscation. I'm assuming there would be an objuscation process or that would be part of it. Though as with anything, even standard compiled stuff, somebody that really wants it can get it your source code.

Manuel Lemos: Yeah.

Michael Kimsal: Not your source code, but they can reverse engineer at the very least.

There was one other interesting thing to me that came out about this. And so, let's say I push out an app to the app store and let's say it's 300 meg. I got a  huge app, lots of assets in it. Then, I pushed out another version because I got some bugs and there's a couple of new features. Somebody doesn't have to download all 300 meg again. They got a fairly granular check summing process on individual chunks of your file.

So, if you got 90% of your files the same, most of those chunks shall be the same and it would only re-download the delta, not byte delta but chunk delta. I don't know how big the chunks are, but that's a goal there, too.  Especially, because this is also going to be pushed out on tablets and smart phones eventually, the same mechanism for distribution. So they thought a lot about bandwidth.

Manuel Lemos: Yeah. Well, I guess that's a concern of app stores when they provide updates for newer releases of the application, you don't have to reload the whole thing.

Michael Kimsal: Well, you know, to some extent, that probably put some people off, especially on mobile. If I see something, I don't think I necessarily want to download it at a 300 meg right now, because that might put me over my data cap or my data bandwidth or whatever.

So telling people ahead of time, "Hey, this is only going to be an extra 20 meg download instead of 300," that's pretty cool.

Manuel Lemos:  But regarding JavaScript, you even mentioned jQuery and stuff like that, that is usually to manipulate documents, the DOM objects.  Are you saying that they somehow provide a DOM environment in which you manipulate user interface like a DOM?

Michael Kimsal:  Yes, your apps are Web apps. The apps that you make are Web apps. A lot of their UI controls are updated Web controls.

It's actually pissed off some of the developer community because some of the things that they had wanted from XAML and some of the other toolkits are not available in standard Windows 8 JavaScript UI stuff.

It's very Web-oriented for people. And again, you're not going to run it directly in a browser but your app would be running effectively in an IE 10 engine.

Manuel Lemos: Yeah.

Michael Kimsal:  Think of  having IE 10 or IE 9 but having access to the file system or having access to some other aspects of the computer that you don't normally have access to. Very well-managed offline storage, synced offline storage. So anything you do can be automatically be synced up to a cloud device at some point.

Manuel Lemos: Well, that's interesting. I think it's clever for Microsoft to do that, given that JavaScript  has been gaining a lot of momentum over the last years. Many people like to do both client-side and server-side development on JavaScript. And now, desktop side, we can assume that Windows 8 will be a desktop environment, as well as mobile environment.

Michael Kimsal: Yeah. Mobile, tablets, desktop, most of your code should run. If you do the JavaScript, that should run on all those devices pretty much untouched. What's interesting to me, not just kind of the geeky tech stuff but this is real 180 from Microsoft.

I think they've realized that they're not in control of this anymore and they are... you… cynically can look and say, "Well, they're playing catch-up and they're realizing they've lost everything."

They've got to do something different. In the past, all their stuff was, "You write for Microsoft only." Yeah, if you're taking advantage for everything on the Microsoft platform, you're going to be tied to that, just like you are on Apple, or just like you are in Java or something.

But using JavaScript and CSS and HTML and all these widgets as the core of your app and saying this is a first class citizen will make it easier for people to come into that ecosystem. But also will make it easier for people to leave.

If you write something, you can write something on Windows 8 first or in conjunction while you're writing other stuff at the same time. Or nearly, you can reuse a lot of your logic and reuse a lot of your assets much more simply than saying, "Well, I'm going to write an Objective C and then, try to move it to Java or try to move it to C# or something."

I think they got a lot riding on this. And I don’t think there's going to be an easy win for them. But as a  JavaScript proponent just like I really like the Palm move several years ago that didn't work – I think that was less a tech issue, more of a management  issue,– I'm hoping that Microsoft pulls this off.

Manuel Lemos: Well, I think they are in the right track. Although, I'm not sure if all of the sudden they will all be loved for that. But as you mentioned, they are even thought of upsetting their own traditional developers because they are not making the libraries available that they had made in the past for the Windows 8 development. But I think converging to JavaScript… it is a different environment. Well, I don't know…

Michael Kimsal: I'm back. I'm sorry.

Manuel Lemos: … If this is going to be acceptable for them, well accepted in the whole developer community. But I think it's a good move.

Michael Kimsal: It may upset some developers, but it may. I don't think we were off the bat for a lot of people but it will be attractive to another class of developers, the Web developers who has traditionally been able to get their stuff on to Windows desktops.

So, while you may upset some of your current people, if you can attract new developers in the long term over the next five, ten years, that may be a very strategic win.

Manuel Lemos: Well, we have to wait and see, but I think that's a good move, in general.

JavaScript Libraries to Turn Pages like a Book (25:19)

Manuel Lemos: And talking about moves, we need to move on to the next topic on this podcast.

Michael Kimsal: Please.

Manuel Lemos:  I was willing to talk about a couple of libraries that they sort of do the same thing and with different approaches. But the purpose here is mainly to turn pages like a book.

Michael Kimsal: Yeah.

Manuel Lemos: I mean, provide the user interface for that. I'm just trying to open the right window. Let me see….

Michael Kimsal:, I think, is the first one, right?

Manuel Lemos: Yeah. Well, this is the first that I had opened. Basically, what it provides is a means to present pages, as in a book. You can see it here, you can flip to turn a page, like many book reading applications on reading devices.

Well, at least those that...… probably the original Kindle does not do this because it's to slow. But I don't know if it's coming smoothly over there.

Michael Kimsal:  Yeah. It's looking pretty…

Manuel Lemos: Yes?

Michael Kimsal: I mean, I'm seeing it on my machine. But also through the video, it’s looking pretty smooth, too.

Manuel Lemos: Yes. And this is TurnJS. And there is another one that I've also seen. I'm not sure if we are going to… It's a different kind of turning. Let's see, it's also nice. Probably not as fancy because it's a…...

This one uses CSS 3D transforms. And the other one, I'm not sure what it is, probably they use graphics manipulation on canvas. Well, it gives a good impression to your pages. And if you have something to show like a book, you probably would like to try these libraries.

The only thing that made me wonder about TurnJS is that it says it is open-source. It is available on GitHub. If you want to get it now, it seems you have to pay a license per domain, which is a bit odd.

I do not have anything against paying for software but since this is JavaScript, is there a difference between the version that is on GitHub and the version that they sell? I don't know, because they offered the code all open-source, why would people pay for it?

Michael Kimsal: Well, because you should. I mean, I faced this issue recently with, not JavaScript, but a Java library called iText . The earlier version that I've used was LGPL and a couple of years ago, they switched it to AGPL, which at the moment, is not something that the client I'm working wants to use nor do they have the budget to pay for a license. So, we could just used it, used the latest version and not pay them. But morally, that's not really a good thing to do.

So, we're using the earlier version which has bugs in it. It's not as fast, it's not as cool. So we're making that moral stand. And he probably has people taking it and using it and not paying for it.

Manuel Lemos: Well, I don't have anything against that. My question would be is there a difference between the version in GitHub and probably the main version?

Michael Kimsal: There probably… I don't know. There may be, there may not, but my guess is that there probably isn't.

Manuel Lemos: Well, anyway…

Michael Kimsal: He's from Venezuela, actually.

Manuel Lemos: Right. Well, the idea here is mainly to tell our audience about these two libraries for very similar purposes. But as I said, this doubt, I was wondering if there was anything I was not noticing about it.

Genetic Algorithms in JavaScript (29:38)

Manuel Lemos: Anyway, moving on the next topic, I would like to comment a bit about a new library about genetic algorithms. Michael, are you familiar with genetic algorithms?

Michael Kimsal: Well, I have some genetics in me, but I don't really know much about how they work.

Manuel Lemos: OK, the answer is no.


Michael Kimsal:  I got some from my dad many years ago.

Manuel Lemos: And that should work.

Anyway, this genetic algorithm, it's basically a metaphor regarding optimization processes that depend on the order, and the metaphor is on the genes. If you switch the order of the genes,– the way they are arranged, they are composed in your genetic sequence, you can reach to different results.

And, genetic algorithms are used in a lot of optimization problems. Like if you have many customers to serve all of a sudden, which one will you serve first? Maybe, you'll serve the one that arrived first. But if that's customer is very far, may be in a place that will take a long time reach, maybe you can serve customers that are closer. This is just not a very good example of problem that genetic algorithms.…

Michael Kimsal: Yeah. That's a horrible example.  That's a really horrible example and I agree with you, yes.

Manuel Lemos: [Laughter]

Well, that's me trying to make it simple. And anyway, the purpose here is not to explain genetic algorithms with the accuracy of being detailed about it. But just to mention about this article here, that tells about some machine learning algorithms based on genetic algorithms that are implemented in JavaScript.

And if you have interest in the problems of optimization, all these things that are bit advanced but they have good use cases for real world problems, you may want to check out this article here.

That was basically all that what I wanted to comment about. I'm not even an expert as you may have guess to tell much more than this…...

Michael Kimsal: No.

Manuel Lemos: … ... about this problem.

Michael Kimsal: How do you say… I have  a question about in Brazilian, how do you say no.

Manuel Lemos: No –is não. 

Michael Kimsal: OK.

Manuel Lemos: It's a bit nasal.

Michael Kimsal: No? I should say it nasally.

Manuel Lemos: Yeah, não.

Michael Kimsal: No.

Manuel Lemos: Yeah.


You are good at foreign language.

Michael Kimsal: I'm not very good at English but I'm great with other languages. Gracias.

Manuel Lemos: OK, again, back to Spanish.


Michael Kimsal:  Hopefully, that's the closest I've got.

Editing Gaant Charts in the Browser (32:43)

Manuel Lemos: Well, moving on with the podcast now, I'm going to talk about, just briefly, about a new library. Sort of an application that is basically presented as a library that will let you create and edit Gantt charts for whatever purposes.

This is an interesting application because it lets you create all sorts of schedules for tasks that you want to perform. And all this is available as a library that you can embed in site that you may have. And if you have any purposes on which this would be useful, you may want to try it because it's very feature-complete, I would say.

I'm trying to switch off the screen sharing here. OK , it worked.

Well, regarding the Gantt charts, personally I don't have any applications that I could use it but I thought it would be interesting. Michael, do you have any applications that you would find useful to include a Gantt chart for some purpose?

Michael Kimsal:  Não. How was that? Was that good?

Manuel Lemos: Ah, that was good. 

Michael Kimsal: Thank you. No, not now. I have in the past, many, many moons ago and maybe will in the future. But I have not 'Gantted' in awhile.

Manuel Lemos: Yeah. In PHP Classes, there was a class for rendering Gantt charts. Somebody provided it many years ago. But it was not really an editor, an interactive tool for this purpose. Well, if you have any use for that, now you know, there is a full-blown editor for Gantt charts.

Latest JavaScript Objects released in the JSClasses site (34:43)

Manuel Lemos: Moving on with the podcast, we are getting to one of the regular sections on which we comment about the latest classes published in JSClasses site.

Michael Kimsal: Yes.

Manuel Lemos: Well, there haven't been many classes published in the latest times. But there were a few and we are getting close to the goal of reaching 200 packages,  which as I mentioned in previous shows,  is a goal that will determine when the Innovation Award for JavaScript components will be started.

And regarding that, I already talked about this with Michael. And Michael, actually JSMag will be also sponsoring the innovation award when it starts. It basically what Michael will be providing is a subscription of the magazine to a winner that is nominated to the Innovation Award when it starts, just like in the JSClasses site.

Other than that, we are going to just comment a few about this latest classes. Michael, which of the process did you think are more worthy?

Michael Kimsal: First one on that list, Crazy Uploader is from... I have it up here... A-ha…

Manuel Lemos: You are looking at it with better glasses.

Michael Kimsal: I couldn't see through my goggles. Sandro Alves Peres from Brazil, hope I'm saying that roughly correctly. And I didn't, my first look at it, I just saw the name, "Oh, an uploader." There's a lot of those.

This is explicitly an uploader for the TinyMCE content editor. And while I know that TinyMCE for some people is kind of old school, it's out there a lot. I think people that provide upgrade functionality for that CKEditor and TinyMCE, I think, have powered generations, multiple years of WYSIWYG editors on people's sites.

And oftentimes, the default behavior is not enough. So I applaud people like Sandro who makes plug-ins for those. I don't think there's enough of those. I've struggled with that in the past.

I know it’s possible to go in and configure all this stuff but I just want something that's better than the default. I don't want to have to learn programming to do this. Again, this looks like a very good plug-in to give you much better than default behavior in TinyMCE.

Manuel Lemos: Yeah. Actually, it's a solution that mixes JavaScript and PHP to manage the file on the server. So, it can not only upload but also delete, rename and all those things that you need to do with the files that you manage, that you needed to include on your documents... can be images. I think it even supports Flash objects.

And from what I understood, Sandro developed this because he needed it in his own projects. So, thank you, Sandro for sharing this component. I'm sure it could be useful.

Michael Kimsal: Say it in Portuguese. Say it in Portuguese.

Manuel Lemos: Hey, you… He'll understand.

Michael Kimsal: I want to hear it. I want to hear it.

Manuel Lemos: What do you want to me to say regarding thank you.

Michael Kimsal: Thank you, Sandro. I think you're a very handsome man. Say that.  

Manuel Lemos: [Laughter]

No, no, not that part. Obrigado, Sandro, but…

Michael Kimsal: Obrigado, is that it? Obrigado?

Manuel Lemos: Obrigado is thank you.

Michael Kimsal: Obrigado, Sandro.

Manuel Lemos: You wanted to learn a new word. I thought you already knew that because it's pretty common.

Michael Kimsal:  Not in Youngsville, North Carolina. It's not.

Manuel Lemos: I mean 'Thank You'.

Michael Kimsal: Yeah, but…

Manuel Lemos: It's one of the few things that you learn first in a language.

Michael Kimsal: Right. Well, some of us.

Manuel Lemos:  You know, there is a… Well, I'm not sure if it's accurate because some people say it's not right. But they say that 'Arigato' in Japanese came from 'Obrigado' in Portuguese.

Michael Kimsal: Interesting.

Manuel Lemos: Due to many centuries ago, Portuguese visited the Asian countries to do trade and there is a lot of words that either derived from Portuguese words or were inspired in the meanings. Like Taiwan, the island, which is actually a country, came from Formosa, which means handsome in Portuguese.

Michael Kimsal: Yeah. Formosa.

Manuel Lemos: It's not the same word, it's just the translation to it, I think. I'm not sure.

Michael Kimsal: Sure. And we have Formica here, which is pretty close as well too. And Formica, generally, looks pretty good. So I think there's certainly a vibe between all these languages. It's amazing.

Manuel Lemos: Yeah, if you go and study it more deeply, you will find that there was a lot of exchange of words between languages.

Michael Kimsal: Well, I'm going to exchange a few more words with you. You son of a … Oh no, politely. Politely.

Manuel Lemos: [Laughter]

Michael Kimsal: Let me share my screen. I'm going to share some polite words with you. There we go.

Another  component that I think bears looking at... Anaglyph. Ana-who? Anna, just a women's name? No, you've heard wrong. You've only heard the first half. Anaglyph, well, I guess that could be somebody's last name.

Anaglyph 3D, it's from our old pal – well, he's been with me, not that old – but he's only 24, it says right there or veinticuatro. I don't know if that's how they say in Latvian.  Arturs Sosins. Hello, Arturs.

Anaglyph present text and images ready for 3D viewing, present text inside a given page element to appear with shadow effects. Whoooo!

At some point, he's going to do the glasses effect, that would be pretty slick, or the snorkel effect. Have you used this one yet? Have you played with this one?

Manuel Lemos: No, I will. Basically, just displaces the image so you can see the red, separate from the green or the blue. But, basically, it's just a way to prepare certain stuff on the pages to be viewed with a 3D glasses.

Michael Kimsal: But I am not…... Well, if I have the glasses, that's one thing. But I don't have any glasses to try it out.

Manuel Lemos: Well, there are always people that enjoy those things.

Michael Kimsal: I've never been very good…... You ever go to the store where they've got those pictures that you look at and if you stare through them, then you can see a horse? I've never been good at those. Were those a big thing in Brazil  in the 90s?

Manuel Lemos: No.

Michael Kimsal: No?

Manuel Lemos: I remember I was not in Brazil in the 90s. But I remember about that many years ago, when I was still in Portugal.

Michael Kimsal: OK.

Manuel Lemos: Well,  I don't know.

Michael Kimsal: I didn't have glasses have to try this out.

Manuel Lemos: Sometimes, when I got to a theater to watch a movie, and there is a 3D version, I watch the 3D version. Not a big deal but there is always this appeal to see things in 3D to see if it would make a big difference. Usually, it doesn't, but OK.

Michael Kimsal: I did see Tron Legacy last year, almost two years ago. I saw that in 3D. There was only probably three or four moments where something came at you where there was an actual impact to the 3D.

Manuel Lemos: Did it hurt you?


Michael Kimsal: No, not so much.

Manuel Lemos: You got scared.

Michael Kimsal: I had to wear the glasses over my regular glasses.

Manuel Lemos: Oh, yes, I also had to do that.

Michael Kimsal: I tried wearing them without my regular glasses. I don't wear them… Obviously, I'm not wearing them all the time. Sometimes, I put this on just for fun. But, my regular glasses, I don't need them all the time, but I felt like I needed them in the theater from part of the time. It was really  difficult to see with the glasses on.

So, anyway, speaking of having words…

Manuel Lemos: Well, I also have to use both glasses, the 3D ones and the regular ones, because after longer distances, I see all too blurred. So, even if it's not 3D, I have to use the regular glasses.

Well, moving on, I also would like to comment on a couple of classes. Hang on, let me go through the challenge of screen sharing.

Michael Kimsal: Are you feeling OK right now?

Manuel Lemos: I'm looking at your…...

Michael Kimsal: How many fingers am I holding up right now? How many fingers am I holding up?

Manuel Lemos: I'm looking at another window.

Michael Kimsal: OK, that's fine.

Manuel Lemos: Well, anyway, there this class subject by Karl Holz from Canada. From what I understood, he's a Muslim. He has developed several components that are meant to access resources interesting for Muslims like retrieving information about the times when you have to pray.

Well I hope I'm not putting it in an inaccurate way. So he developed several components, part of them are in JavaScript, other parts are in PHP.

Michael Kimsal: There's like two. There's a little bit of a...

Manuel Lemos:  Yes, in this case, the component can display RSS feeds on the browser side. And it may be some of the items are actually video or audio players that may require a Flash using the jPlayer in this case, that he uses.

So this component can retrieve the information from the RSS feeds. So it can display the players on page. I think it's actually interesting.

Michael Kimsal: I like the name. I mean, I don't mean Karl's name, not that I have anything wrong against that. But SalamCast, it was just kind of a neat…

Manuel Lemos: Yeah. I guess that's a Muslim name.

Michael Kimsal: It's a word.

Manuel Lemos: Yeah, I'm saying that, I know because he'd already published other components in the PHP Classes site to do the other part on the server side.

Namely, there is a component that can retrieve some information about the prayers, as I mentioned. They have to pray at specific times and they have to be aligned to Mecca, I think. You have to pray in the right direction. And Karl provided a solution that retrieves some information from some other servers that provide you this information.

Although, this specific object is more generic, it is to play RSS feeds, play audio and video from RSS feeds, it was part of a larger solution. It was more useful to Muslims, that have these praying needs. I hope I'm not putting it in an inaccurate way, because I'm not so familiar with the Muslim religion. But I hoped I have explained it reasonably well.


Michael Kimsal: Oh, wow. OK.

Manuel Lemos: Did you play some audio effects?

Michael Kimsal: Yes, yes I did.

[Sound effect]

Manuel Lemos:  I guess this is new to me.


Michael Kimsal: Carry on.

Manuel Lemos: Well, moving on, I now like to comment on another object. In this case, an object that will allow you to drag and drop multiple files and have them uploaded by AJAX. This component by Arun Kumar, from India, can do that. The actual component name is Multiple File Drag and Drop Upload.

I think we have seen other similar components but this one is always useful because there are always needs for these kinds of components.

In this case, it uses jQuery to perform the AJAX upload but it has to integrate with the events of the dragging and dropping files from the desktop to the browser window. So that is useful from Arun.

Upcoming Articles in the JSMag magazine (48:00)

Manuel Lemos: Well, moving on with our podcast, it's time for Michael to tell us about the upcoming issues of the JSMag magazine.

Michael Kimsal: Yes, it is.

[Sound effect]

Manuel Lemos: [Chuckle]

Michael Kimsal: Now, that's a…

Manuel Lemos: I didn't figure it out. Is it in Google effects, no?

Michael Kimsal: I'm not telling. I'm not telling at all.

Manuel Lemos: You don't want me to put crickets on you.

Michael Kimsal: No,  that was actually on  me. Anyway, I'm pulling up the content list, issues list.

[Sound effect]

Michael Kimsal: Because this is actually in production right now, so I'm looking to see what's going there. And of course, because I'm using the same browser as I am for this, everything is a little slower.

Well, I know Mike Schwartz has continually written about his development of SilkJS as a service-side JavaScript platform. He has graciously been contributing his knowledge about… Node gets a lot of the big press but there are other people developing other service-side JavaScript systems and SilkJS is Mike Schwartz's effort.

Something he's been doing for his own needs but he's been sharing it. And this month, he's actually talking about writing a Redis driver in JavaScript for SilkJS. So people that are interested in not just using something but learning how something was written, he's done a great series so far. So that's the next introduction on that or series on that.

Couple of things, Jimmy Meyer's back with us, has a piece on how to detect some geometric detection when lines or when objects cross each other. Kind of a Math, it's not heavy on Math but it's a little beyond me. [Laughter] So it doesn't go much in the way of mathematical algorithm but it would beyond me, because it's just not my strong suit at all.

We have something on HTML 5 offline storage, though I don't think that's going to be ready for Monday. But there's couple of other things that I'm actually not sure if it's going to be out next month or the month after. So, that's kind of what's in store right now.

Manuel Lemos: Well, you talked about Windows 8. I was wondering if you had anything planned, too.

Michael Kimsal: Well, I have talked to some people about it and I'd like to have… We won't have anything in October. We may have something in November or December and maybe a small series on getting up to speed with JavaScript in Windows 8.

When the Palm stuff was big a couple of years ago, and that was going through its heyday, we had a couple of series from people on that. At that time, that was pretty well received.

Actually, we had one issue out and the Palm community came in droves just because there wasn't that much information out there for it. It's there but it tends to be… The Palm community knows all about all their resources so when there's a new one, people like to gravitate to that.

Manuel Lemos: So, that's interesting.

Conclusion (51:16)

Manuel Lemos: With that, we particularly ended this podcast.

Michael Kimsal: Oh, I am going to continue to invite people to our upcoming conference in November.

Manuel Lemos: Oh, yeah.

Michael Kimsal: November 17th, Indie Conf – freelancers, people who aren't freelancers but thinking about it, if you work for yourself part-time, developers, designers, anybody who've been tweaking in between.

We will have 21 sessions on the day. We have, I think, 14 confirmed right now. There's another five while I'm waiting for speakers to get back to me. In almost all cases, they're going to be yes but we're just hammering out, making sure that it fits in their schedule., there is some information up right now. I' just going to bring that up for a moment, just to share, just so that it gets some airtime. Though, maybe I shouldn't because it's…

Manuel Lemos: I was wondering if you have any new speakers that were lined up recently that you wanted to comment on.

Michael Kimsal: Yeah. Well, it's just waiting now because I'm trying to do the screen share. Do you my screen up now?

Manuel Lemos: I see but it's in your dialer.

Michael Kimsal: Yeah. It is coming up. It's just taking its sweet old time. There we go.

We have… Wow!

Manuel Lemos: It's really slow, right?

Michael Kimsal: Yeah. I'm doing my Google Hangout through the same browser and probably, I should not do that.  And the other thing is, I think it's sharing the whole screen, not just the browser. So I think there's extra stuff there.

Manuel Lemos: Yeah, that's right.

Michael Kimsal: We got a couple of different focuses this year, trying a couple of different things.

Katie Benedetto – there's a picture of her at the bottom – she's a new speaker to us. She came last year, or she attended, and she's going to be talking about – there's this movement on in the past couple of years called Lifestyle Design. The "Four Hour Workweek" kind of kick of from a naming standpoint.

The idea of trying to build a business for yourself, maybe you and one other person, but build a lifestyle business, something that fits the kind of life you want to have rather than trying to fit your life around a particular business or particular job, kind of turning that on its head. And she's going to be talking about things that she's done, things that other people are doing, tools that you can use to help guide you in that journey and so on.

A lot of different ideas there. We somebody else who's also going to be talking a similar topic, similar topic, similar focus, but he's not confirmed yet. So, I will announce that next month.

Jonathan Bailey is new to IndieConf as well. He runs a podcast called Plagiarism Today. He's not an attorney himself but he has been a long time enthusiast and advocate in issues of copyright and plagiarism. But, he's going to be talking about how to protect your assets online, your digital assets, your content and things like that.

We’'ve had  a few of these people here before, and we're not trying to skip over anybody in particular. Brennan Dunn is actually somewhat well-known in our Hacker News Web site right now. He has written a book called  "Double Your Freelancing Rate". And he's up in Virginia and he's going to be coming down to IndieConf on the day as well.

So it's interesting to see who we've got so far. You can go there and you can a closer look at the sessions. There are a few more that would be coming, but get your tickets now. There's my plug.

Manuel Lemos: Well, it seems it will be a very packed event. Is it one or two days?

Michael Kimsal: It's one day. And actually, I'll be brief about it, but it's something that's come up a couple of times. Because it is a way for people to come , and I think there are  some people that aren't coming just because it's a one-day event. If that's you, we don't have it on here yet but we will be doing some sort of an event Friday night, probably an open house at one of the local co-working facilities and probably, dinner drinks kind of thing on the Friday night. This is a Saturday event.

So we will be, if you are coming in to town, don't think you have to come Saturday morning. If you want to come in town, there's a good deal on the local hotel and you will be able to join most of us. And we'll have a good time Friday night, too.

Manuel Lemos: That's great. Well, with that, we practically have ended this podcast.

Michael Kimsal: Yes.

Manuel Lemos: So I would like to thank you again for coming, Michael.

We tried to do something different this month with Google Hangouts, starting it as a Google Plus event but it didn't work well because it was refusing to allow to record the transmission. So, I had to start a separate Google Hangout for the podcast.

Several people who said they wanted to attend did not make it, that's the problem. I tried to post the URL but it seems it is not working, at least directly. Well, anyway, whoever could not watch it will be able to see it later when it is published.

And with that, on my part, that's all for now. Bye.

Michael Kimsal: Bye-bye!

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

Login Immediately with your account on:


No comments were submitted yet.

  Blog JS Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog JavaScript as Base of...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)