Download Size: 36MB Listeners: 1160
Introduction music: Riviera by Ernani Joppert, São Paulo, Brazil
RSS 2.0 feed compliant with iTunes:
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.
Michael Kimsal: Yeah.
Manuel Lemos: Hello, Michael. How are you doing?
Michael Kimsal: Hello. I have one thing to say. And that is, if you're going to do it, do it right, yeah. do it with me.
Most people listening to this won't get that. But I do have to say, look at this. You saw!
Manuel Lemos: Live.
Michael Kimsal: The Amazon box, this just came three minutes before we went on the air, my "Grails 2" book by Jeff Scott Brown and Graeme Rocher. Did I point at that right? Yeah, good work, you guys.
Manuel Lemos: Yeah.
Michael Kimsal: There you go. So I got some reading to do tonight.
Manuel Lemos: So Grails is equivalent to Ruby on the Rails for Groovy. And the Groovy is sort of a scripted Java, right?
Michael Kimsal: Dynamic language for the JVM , interoperates with Java and Grails is the Web framework inspired, to the extent that it was inspired by Rails in terms of the name, convention over configuration. But what you are configuring or what your convention is over is a largely ran around a lot of Spring, MVC, Hibernate and SiteMesh and a lot of existing Java technology wrapped in one package.
So I've said this before, I'm a huge Grails fan, been using it for a long time. And I just can't wait to read the new book. OK.
Manuel Lemos: You also have Groovy Magazine, right?
Michael Kimsal: I do. I do, groovymag.com.
Manuel Lemos: It was your plug.
Michael Kimsal: Yeah, that's not what we're here for today, but...
Michael Kimsal: Almost, almost.
Michael Kimsal: You're so close.
Manuel Lemos: Yeah. Well, at least I tried.
Michael Kimsal: You did try. We can't say that... I've always said Manuel is very trying. Yes.
Manuel Lemos: So one topic that I would like to start commenting is about the Nashorn. Let me try screen share it here.
Michael Kimsal: Yeah.
Michael Kimsal: You know, I saw an announcement about this. It wasn't the same on that you're linking to but I saw an announcement about this recently.
It feels in some way similar to Rhino, though Rhino JS never really took off as much as I think people may have hoped it would. And I think part of that was performance. As much as it was on the JVM, I don't think Rhino was ever intended to be performant as a primary development consideration.
And it looks like every announcement that I've seen about Nashorn recently – though apparently it was first announced about a year ago, –everything I've seen has the term 'high performance' or 'performant' in it.
Manuel Lemos: Yeah.
Michael Kimsal: So, that is probably a focus of it.
Manuel Lemos: Well, here in this news article, it says Oracle proposed it for OpenJDK. Well, I'm not an expert on Java, but what I got, OpenJDK is open source, right?
Michael Kimsal: Yeah. My understanding is that that's where all major development is happening now. There isn't a closed –I shouldn't say this at all – but the majority of effort is going to the OpenJDK.
Apple contributed a lot of their Apple-specific JDK stuff back into the OpenJDK project and that's taken awhile to filter over the last several... To get out to more people. So that's where JDK 7... A lot of the Java 7 stuff, a lot of people I know running 7 now are running OpenJDK stuff.
Manuel Lemos: Yeah.
Michael Kimsal: It's been around for a couple of iterations but it was not very tested or compatible. Six kind of was. I'm running OpenJDK 7 now with a Grails project, as a matter fact, and it seems to be running fine.
Manuel Lemos: Yeah, oh well.
Manuel Lemos: Well, for people that probably are not much into Java, what would be the use of this project? Probably none, right?
So people that right now are doing a lot with Node, or maybe you're doing stuff with the Rhino or something else, Nashorn may be something that you end up incorporating in the next year or two depending on when it's released. So there you go.
Manuel Lemos: So I guess you would already be using Java for some reason, right?
Michael Kimsal: Me, personally? I am. Are you saying...
Manuel Lemos: No, I mean whoever finds this useful.
Manuel Lemos: Are you sure?
Michael Kimsal: No.
Manuel Lemos: You would suppose that it would have better performance for some reason.
Now, I don't know to what extent the V8 engine does this. They may be some optimizations but for long-running process, the JVM has what's broadly known as HotSpot and it's effectively self-tuning. It will keep stats on how code is running. It's profiling code as it's running. And it will do optimizations to the code after it's running.
So if your code's running in a certain way and certain memory's being used in certain patterns, it can self-optimize in a way that traditionally optimized or traditionally compiled code can't. It's compiled and optimized one time and then, it's ran.
So that doesn't mean that Node is not good or fast. It just means that this may be another competitor in that field in the next couple of years.
Michael Kimsal: Probably.
Manuel Lemos: But well, I'll publish a link on the show notes, too, so they can figure...
Michael Kimsal: Check it out.
Manuel Lemos: ... this news. And let's see if this is something that will be interesting over time.
Manuel Lemos: Well, moving on the next topic, I would like to comment on another news. Let me just switch to the right page. Actually, a library.
Michael Kimsal: Is this Aware? Is that what you're referring to?
Manuel Lemos: Let me share the screen. Sometimes it gets stuck. Yeah. Although, this is not a slow machine, it's Windows here.
Michael Kimsal: Ooh.
Manuel Lemos: Well, anyway, this Aware.js library is basically a library that will take in account whether a visitor the page is returning or if it's the first time, and other statistics that may be interesting for you to customize parts of your pages depending on those factors.
I think it even defines some CSS classes that you can use to adjust the presentation of your pages depending on whether it's the first time the user is coming to the page or is returning. If it is visiting the site for the first time in the current day, several options are available.
Also, the library itself has some...– I don't know if these are variables of functions. But you can check it out to somehow dynamically adjust the presentation of your pages to do something more customized for your users.
I thought this is actually simple and interesting to perform some customization. But that's all I have to say about this. Michael, did you check this library here. Any thoughts you would like to add?
Michael Kimsal: I've been waiting to say something. Ah, waiting to say something. I love it. I'm in love with this. Don't tell my wife, she's in the other room, but I'm in love with this.
Michael Kimsal: Phenomenal. Conceptually, I think you've said it, it's simple. And I get it pretty quickly by looking at it. If the guys or gals who wrote this happened to be listening, two things jumped out of me that would make it, maybe three things that could severely increase the uptake of this and perhaps make this a de facto standard plug-in for people to have.
One is some sort of callback integration with Google Analytics, so that you could signal back to Google Analytics when someone's looking at the page, whether it's the first, second or third time. You can get some of that anyway from Google Analytics but it's being able to trigger certain events back to GA with this would be very good.
Second and third things probably could be tied up into one, but would be making some themes for WordPress and/or Drupal or something with this.
But they probably can't do it themselves, reaching out to some well-known people in the WordPress and Drupal theming marketplace and getting them to incorporate this. Because the idea is great but I think a lot of people are going to have a hard time doing this elegantly and doing this well.
Thirdly, and I guess relatedly, would be – and this actually my number two but I moved to number three – is doing some Bootstrap themes, incorporating this with Twitter Bootstrap and having these guys maybe published some sample Bootstrap layouts that have this as part of it.
To me, that would really help propel this into 'it's a neat idea' to 'everybody uses it'. There you go.
Manuel Lemos: Well...
Michael Kimsal: That's my thoughts. I think it's a great idea.
Manuel Lemos: I think they give an example which is based on the time of the last visit. It shows some content as new.
Michael Kimsal: Right.
Manuel Lemos: Give it some highlight and that can't be done with the CSS classes that they have defined in there. Well, there may be other use cases, it's up to the developer to find that, to use his imagination to find more purposes for this library. So kudos to the developers for that.
Manuel Lemos: And now, moving on with the next topic, I would like to also bring... This is more a debate.
Michael Kimsal: No, that's not the next topic. OK, I was...
Manuel Lemos: Sorry?
Michael Kimsal: I thought this could be the next topic. But I just want to get them my vote, that's all.
You're not seeing what I'm seeing apparently. I was holding up the book in front of the screen but you're not seeing it.
Manuel Lemos: Because I was selecting the other window.
Michael Kimsal: Aaah, OK, got you.
Manuel Lemos: I did not enable transparency in the windows so I could not see one through the other.
Well, there is this article. Actually, I saw other articles that pretty much talk about the same thing. In this case, Adam Hill in his blog, is commenting that he considers callbacks a smell.
I understands that a smell is something that is not very good about the style of programming that many developers employ which is to use callbacks to handle some condition after some tasks have been done.
And other than callbacks, he is also considering the use of Events to trigger those actions at the end of something that happened. As well Promises, he also mentions some control flow technique libraries that probably allow you to call different callbacks one after the other and also named function models as well - several techniques to handle actions at the event.
I'm trying to see if this can be read better. Basically, what he's saying that using the traditional way of callbacks is not very nice because you have to nest them. And it suggest...
Michael Kimsal: What was I saying a year ago or so? I think I remember saying, talking to you on this very show, async programming is hard. Having multiple nested levels of callbacks is very, very difficult for people to deal with.
And certainly, I'm not suggesting that my voice cause all this or that many people's voices had been the cause of this. It's a logical progression. But it's good to know, for me to know, that there has been a lot of work in this realm. To come up with better practices because for me, the idea of trying to wade through... I did Silverlight applet a few years ago and everything is async. Just everything is async and every example we see is "We’ll just register a callback, just make a callback." It becomes very difficult to think about and to think about where your code is, it visualizes stuff.
So any effort, any techniques to make this easier to actually program is welcome by me. I was not qualified to say what would be better. I just knew that the level of complexity that I was being presented with was not good a smell as they say.
It's interesting, we in the computer world would say, "That's a smell. That's a code smell." And there's this implication, "We should take the bad smell," because there's some things that smells really nice. A rose, a fresh citrus smells fantastic. So these are some things to smell. The implication is that it's bad and I get but I like some things to smell nice.
Manuel Lemos: Right. Well, I also agree that nesting callbacks is a hell. We don't... That's something that somehow turned me down with Node.js and that stuff.
I think it's nice to have all done asynchronously because it will allow several things to run in parallel using only one thread to manage all.
But it's not as pleasant as the synchronous programming that we are used to. Maybe because of that, we got so used to synchronous programming that when we see all this mess of nesting callbacks, it's really something very unpleasant.
On the other hand, I was not really sure if this Promises are really much better than that. It's just a matter of nesting your code, I mean, indenting your code because it still looks to me like you're nesting functions.
Michael Kimsal: You are some, but that is not the only way I've seen promises or deferred used. They can be returned and then you can, I believe and now I'm thinking the same thing, they can just be returned and you can capture in a variable and then execute them later.
And they will execute when they're ready to execute, if that makes sense. So your code can invoke them but they won't execute until the value is, whatever process had returned it had said "Yes, I'm actually done now." So he's recreated the same nesting code above. And it's a little cleaner here but yes, it is still largely 'chain, chain, and chain' 'nest, nest, nest, nest'.
Manuel Lemos: Yeah.
Michael Kimsal: But the idea of the syntax of promises in that concept, I think I like. I haven't done enough with it yet but I was playing with a couple different async things just a couple of weeks ago. So, anyhow.
One thing that sort of scare me about having to handle asynchronous actions with callbacks was the fact that if you have to do in a loop, you'll probably be calling nested functions too deep and they'll probably blow some internal stack, I imagine. I'm not sure what is the internal implementation of that.
Michael Kimsal: Maybe.
Manuel Lemos: And if you have just a few number, a small number of iterations, that may be fine. But if you are in a large loop, some application can explode sooner or later, I don't know.
That's why I asked you what you think of that. Here in there, it will probably make sense for Node.js to also provide some more synchronous versions of the function. Actually, they have already some functions that they provide, both synchronous and asynchronous versions. That's probably because it's too annoying to deal with all that.
Michael Kimsal: I will not disagree that it can be too annoying, in your word.
Manuel Lemos: Yeah. Well, let's see how this evolves and probably we'll get back to this later when there are some news.
Manuel Lemos: Well, moving on with the next topic. There are some news about WebRTC. Let me just screen share here.
Michael Kimsal: Yeah.
Manuel Lemos: And make it appear on the right window. It's all is a challenge, it's not guaranteed.
This is just a news from the HTML 5 Rocks site. And they're just saying that WebRTC is available on a few more browsers. As usual, none of them is Internet Explorer. Microsoft lives in a parallel reality that they only follow the others when they figure it's too bad for them.
It seems WebRTC, at least some of its APIs are available on Opera, Firefox and Chrome. And I'm not sure about Safari.
Well, anyway, I'm also not an expert on this topic but from what I understood this is basically set of APIs that allow you to communicate from your browser.
Michael Kimsal: I'll give you an example of this. I was pitching... I'm a fan of Twilio generally, but I was pitching OpenVBX for a small call center project. And the downside of Twilio, it happens to be more OpenVBX. They kind of quartered a lot of small developers like myself a couple of years ago and somewhat seemed to have dropped the ball on that as of six weeks ago.
So we're doing a demo. OpenVBX lets people register accounts so they can be different call center users for example. So when a phone calls comes in it can get routed to different people. Well, the call would come in. And there's a way to configure some of this at raw code but OpenVBX did not provide any way to do this.
So a call would come but into somebody's browser. So their calls are getting routed to people's browsers directly which is pretty good. But it use the Flash applet for everything. So a call would come in and somebody would click the applet thing and then, it would pop up the standard Flash, "Oh we want to use your microphone. Do you want to allow it or not allow it?"
Manuel Lemos: Oh, yeah.
Michael Kimsal: And if you said no, and some of you out there probably have dealt with this, if somebody would accidentally hit no, there's no way to ever bring it back. It's just "Hey, you didn't want to use the microphone. So screw you, you can never use this computer again with Flash with this website." It's just ah..
Manuel Lemos: Yeah.
Michael Kimsal: So that was a usability issue. There was some capability issues. I had to hack it a bit. They seem to have abandoned OpenVBX to some extent. And then, about two days after I made a decision to not use it and go with another product, Twilio announced, "Hey, WebRTC is now part of our Twilio something rudder."
And I wrote to one of their people and said, "Is this going to be supported in OpenBVX?" And they said, "Well, it should be." Already, it wasn't. And then, I got an email a few days later saying, "It's in the latest version. It just got updated."
So now your browser can have a call routed to it if you're using – I think at that time – it was Chrome, but probably in the next month or so, Chrome or Firefox or something. So rather than have that Flash thing, it will just come and use the native stuff in Chrome. Which is in those sort of situations, like in a call center, you can just tell everybody you got to use Chrome for your phone. You'll just be logging in with Chrome, that's fine.
So the lack of IE support in verticals, I don't think is really going to hurt. It's certainly not going to hurt WebRTC adoption. It's going to hurt IE's user base in those environments.
Manuel Lemos: I know.
Michael Kimsal: And I'm sorry that took so long but that was a real world example of my being impacted of WebRTC adoption pretty recently. Had all this happened like two months ago, I think we probably would have ended going with Twilio and OpenVBX.
Manuel Lemos: So you have already used WebRTC or just in... ?
Michael Kimsal: Well, I played with it after we made the decision to not go with that. I did play with it. And I did some sample calls and they came in, they come into Chrome and I'm just talking into my microphone directly into the browser rather than having a Flash applet.
To that extent, it's really just a progression from it. I think your Chrome, if you've used some search boxes, some text boxes, will have the little microphone on there. You can click that and talk into it. I think your audio actually goes to Google to be translated. But it's...
Manuel Lemos: It uses...
Michael Kimsal: It's kind of next step from that. It's actually connecting – the browser's connecting directly to your audio. And I think you can do video with it. The examples in your screenshot were showing video too, so hooked into your webcam as well.
Manuel Lemos: Well, actually, it also show... Let me share again – show some chat windows. So that is why I was wondering.
Michael Kimsal: I don't think the idea of the chat windows, I don't think if that ...
Manuel Lemos: Or maybe that's a log.
Michael Kimsal: Yeah, I don't think that's a direct part of WebRTC but I may be wrong in that. I may be missing something, but I think that is probably just somebody's chat code that they have running there.
Manuel Lemos: Well, I think it shows some... Probably, this was nothing. I think this is a screenshot. Well, it shows here some form with some text to be sent.
Michael Kimsal: Well, streaming screen capture, you can do that. So capture the visible area of a tab as a stream which can be used locally or with RTCPeerConnections.
Manuel Lemos: Well, that's a great feature. As for chat, there are plenty of chat applications that do not need WebRTC. So that it would not be...
Michael Kimsal: You know, I think I'm actually wrong on this. The idea that there is just a data channel part of the WebRTC API. And it looks like you could use that for doing peer-to-peer or you connect channel to somebody and you'll be part of the chat. So it looks like that, maybe part of it.
The downside, because I actually have recently implemented chat system and there's a lot of interesting chat tech out there. This would be another aspect of that. But I need to be able support if not IE 6, at least IE 7. And so I'm better off going back with really primitive stuff just because I know it will work. Even if it's slow, it will work on everything.
Manuel Lemos: Yeah.
Manuel Lemos: Well, at least this feature will be able to stream your tab on your browser. I think it is a great feature because it will enable a lot of applications that otherwise probably you would have to resort with some other tricks like Java or something else to capture what is on screen.
Michael Kimsal: Yeah.
Manuel Lemos: Let's keep an eye on this and see what developments we can expect from it in the future.
Manuel Lemos: OK, let's move on with the next topic. This is actually related with...
Michael Kimsal: Keep going.
Manuel Lemos: Because I have to do some developments.
Michael Kimsal: OK.
Manuel Lemos: I have some developments... What's that, some power drink?
Michael Kimsal: Red Thunder.
Manuel Lemos: It's a bit blurred here.
Michael Kimsal: I'm trying to do my radio voice there - Red Thunder.
Manuel Lemos: You always have a radio voice.
Michael Kimsal: You want to hear this? Here we go.
Did you hear that?
Manuel Lemos: Now, let's see how the transcriber will transcribe that.
Michael Kimsal: OK.
Manuel Lemos: It's just described at schlep.
Michael Kimsal: Yeah, that was a bottle top opening. OK.
Manuel Lemos: Back to the topic that I wanted to cover. Recently, I've been actually enhancing some of the user interface for the future that went through recently in PHP Classes and JS Classes about the system levels and missions.
Let me screen share the right page here. Basically, I wanted to implement some enhancements that would make it more obvious to the users –what happened and what's next.
So I developed a simple plug-in to an animation library that I have that will allow the user to see what next, like circle in the page. But it's better to show them just now.
OK, here we go.
So when the user arrives to his status page, it just shows some messages. There is a progress bar animating here. And the next thing that the user has to do is this mission here. And it appears with a circle that is drawn with a canvas object.
Then, he clicks here and another circle here appears. So, there is this pattern of using this nice animation tool, so the user pays attention to whatever is the next thing to do.
Anyway, the topic that I wanted to bring is that I wanted to style these graphics, this line, as it appears here with the CSS. And I could not figure a way to do it. I mean, the properties of the graphics drawn on canvas are totally new to CSS.
CSS does not support them in any way. They have new names like lineWidth or lineCap. Several of those properties that are not supported.
I even went to a CSS community now that Google+ has communities. I went to the CSS community on Google+ and ask somebody. But nobody knows and I think this is an obvious gap in HTML 5 canvas.
Why didn't they plan it to have some styling support so you can define the styles? Well, I defined it here but these properties do not exist - lineWidth and lineCap. And I post this message and obviously nobody understood that. Maybe I was asking for something too advanced that not even W3C could anticipate. Or am I wrong?
Michael, what do you think? Do you think there should be some support in CSS to define these properties of canvas?
Michael Kimsal: I don't know.
Michael Kimsal: If you can define it programmatically, if you do it programmatically, you should probably be able to CSS it. Now, what reaction did you get from people in terms of asking "Why isn't there support for this?" Did you get any reaction at all?
Manuel Lemos: No, I didn't ask W3C because I looked at the timelines of specifications. It seems that 5.0 is practically done and they are already planning on 5.1. Anyway, since I needed this, I just needed an answer yes or no, can I style now with the CSS? And the answer is no.
Michael Kimsal: No.
Manuel Lemos: I didn't even go there and ask anybody if they offer any for the future. But I think they should.
Michael Kimsal: It feels like something that's probably should be done. Politically or technically, in any project of this size, something getting implemented, there's always a balance how much do you put out that isn't, if useful... If some of this is useful and it would be more useful in something, but do you wait until everything is done before you put it out?
It would surprise me a bit if there's absolutely no plans for it ever to be, for any of it ever to have any programmatic styling at all. But it would not surprise me if we see it in the next couple of iterations, next couple of releases of future things.
Manuel Lemos: Right.
Michael Kimsal: That probably wouldn't surprise you either, but maybe not.
Manuel Lemos: What we have seen historically is that many other things that later became part of standards who were introduced in browsers first, regardless if the W3C people there anticipated the need.
To separate those things.
Michael Kimsal: Yeah, yeah. But, I think...
Manuel Lemos: They answer is no.
Michael Kimsal: Yeah, the answer is no right now.
Manuel Lemos: Right.
Michael Kimsal: Maybe... My guess, I would tell you that the source code for many of those browsers out there is open source. You can grab that and perhaps make your own styling engine, extend a styling engine to support that. And then....
Manuel Lemos: Yeah. [Laughter] I hardly have time to develop my own code. That's a...
Michael Kimsal: Come on.
Manuel Lemos: That's a Rasmus-like answer, "Oh if you want, just fix ..."
Michael Kimsal: Well, if it's not then... Yeah, just fix it yourself. Fix it. If, obviously it's not that important to you if you're not willing to go in there and learn the past 15 years of hundreds of people's source code...
Michael Kimsal: ... and understand that, obviously, you're just a flake. You're flaking out, it's not important to you, it's trivial. Just get it away if you don't need it.
Manuel Lemos: Yeah. Well, it's not vital but it would be nicer. That's why it's not important for me. But I think people, it shouldn't be just me that's having this need to separate the styling of the canvas graphics from the actual programming.
Well, anyway, I also wonder if SVG can also be styled from outside. I think you can, right?
Michael Kimsal: I haven't done enough SVG to know. Now, I think you can do VRML. I think you can style your VRML with CSS.
Manuel Lemos: But that's a totally different subject.
Michael Kimsal: [Verbal Noise] I did it without laughing, come on.
Michael Kimsal: 1997, VRML, oh sweet! I can mover around in my browser in 3D.
Manuel Lemos: Yeah. For a moment, I thought you're saying VML which is...
Michael Kimsal: No. That would be like you could hit the forward key and that would do this, and hit the back key and it would do this. Wow, man.
Manuel Lemos: It does a...
Michael Kimsal: And if you combine, if you like hook it up to sync with your push server, man, you'd take over the world.
Well, we never know. It's too advanced, that technology.
Michael Kimsal: Yeah, some of those things, I think the government killed some of those push technology. Man, that was it. It's Marimba.
Manuel Lemos: That is really old. That is early Web.
Michael Kimsal: This is two old men talking about stuff that has no impact on anybody from 15 years ago.
Manuel Lemos: Well, won't you, Michael...
Michael Kimsal: Well, this was important and it happened to me. Can you see this?
Manuel Lemos: Yeah.
Michael Kimsal: You see it? It's called a BulletTrain or BulletRain. It's a wireless keyboard holder but it's got a space from a track pad.
Manuel Lemos: Oh, for a moment, I thought it was your surface computer.
No, no, no, no. So this is here. And I got a pink keyboard cover for my keyboard.
Manuel Lemos: Oh, how nice. That's cute.
Michael Kimsal: Yeah.
Manuel Lemos: Really?
Michael Kimsal: There you go. Yeah.
Manuel Lemos: That’s you're in 2000...
Michael Kimsal: My review. I got stuff that I like. Well, no, because the pink matches my keyboard. It matches the rest of my computer case, so that it's a bit of a soothing effect. But also, I can lean back. I can sit back. I've tried wireless keyboards in the past, but until I got something sturdy enough to hold everything together and add a bit of weight to it, they just felt too flimsy.
So first world problems, my keyboard is too flimsy when I sit back in my chair, yeah.
Manuel Lemos: So...
Michael Kimsal: It's not a callback, it's not a deferred, it's not a future, it's a promise.
Manuel Lemos: Yeah. And other than that, well, I didn't see much coming as new, by the end of the last year, Adobe bought PhoneGap. I didn't see much...
Michael Kimsal: That was the past now, nothing happened there.
Manuel Lemos: Nothing happened there. Except for the Cordova Project which seems to be...
Michael Kimsal: It's just sitting there.
Manuel Lemos: Yeah. I don't know, is it going anywhere? Sometimes, we wonder is this Adobe trying to kill a product? It somewhat is a competitor of Adobe Air.
Michael Kimsal: I think it's more than that or maybe less than that depending on your perspective. I can't think of many tech projects, tech companies or projects, large or small, that have been acquired by another company that have actually gone on to do anything else.
Almost every example I can think of, an acquisition meant the end of the project. Either because it was a competitive thing and it got folded in or there was talent acquisition. They were hiring those people and they got intellectual property. They got some of the people but those people weren't allowed to continue to do what it was that made that project successful in the first place.
I'm struggling here to think of any major acquisitions that had happened at all. I don't think it's really anything specific to Adobe or Cordova or the PhoneGap people at all. I think it's probably more endemic of the nature of tech acquisitions in general.
Now, I will throw out, one of the things - I sort of agree with you. More of the same, a lot of what we've seen in terms of the last year or so has been iterations.
We've got new versions of iPhones, new versions of iPad, new versions of Androids. All of those are in their, depending on how you look at it, the third or fourth, their fifth iteration or generation of their operating system and their hardware.
And these two behemoths are advancing mobile computing to the extent that mobile is having an impact on what we call more traditional desktop, computing desktop, Internet stuff. With OS X, we're seeing sort of merging of the iPad interface and the OS X interface. We're seeing an impact on...
That's been interesting, but it hasn't been revolutionary. We've seen this from three or four years ago and they're consolidating and they're getting better. And I think it's probably easier for some of these things to come up because we're seeing a continued consolidation in the global marketplace and leading up to Windows 8.
Manuel Lemos: Oh.
We haven't seen an impact. We haven't much impact on that yet, or from that yet. There's some stuff all came out of the holidays. Really, the Windows 8 stuff, they had to compete with, I mean in terms of market share, mind share and advertising dollars, they had to compete against Indieconf, first off.
Michael Kimsal: So I think they were a bit of disadvantage there. They had a lot that they were up against, so not just iPad Minis and new iMacs and all that stuff. And they were facing competition on lot of fronts.
So in 2013, will there be an impact or what will the impact of Windows 8 be across 2013? I would like it to be very positive from Microsoft. I'd like it to be positive across the board for developers and consumers. I don't think it would be as impactful as they hoped.
But it's still... Again, Indieconf is over for awhile. They got time to recover and rethink how they're going to attack the marketplace.
Manuel Lemos: Yeah, well.
Michael Kimsal: I'm going to lay low for a few months and give them the chance to rethink...
Manuel Lemos: Recover their report.
Michael Kimsal: Yeah. Well, really, I don't think it was fair. I don't think it was fair.
Manuel Lemos: Indieconf obfuscated Microsoft.
Michael Kimsal: Yeah.
Manuel Lemos: It was almost a tie but in the end, Indieconf managed it. Well, for 2013...
Michael Kimsal: I have more people showed up in my event than they've had showed up at some of their stores.
Michael Kimsal: And I'm not over-exaggerating on that.
Manuel Lemos: That was cruel. But it's very true.
It's true. That was a cruel jab but I just had to get it in there.
Manuel Lemos: Yeah, you've been waiting to say that.
Michael Kimsal: Oh, yes. It took me three years. You know, I could have said the Sony store. I could have said Sony, that's fine.
Manuel Lemos: Yeah. Well, I don't know...
Michael Kimsal: Anyhow...
Manuel Lemos: Talking about Microsoft, I think it makes sense to have a touch screen on notebooks and desktops. I don't think desktops are dead as many claim because if you want to, for instance, do some work, you need a large of screen. You are not going to the tablet for that.
Probably not even on a small notebook for that because large screens are heavy and you don't use... Notebooks would become to heavy to be called notebooks if they would use large screens. So there's plenty of market there, probably much less now the tablets are becoming popular.
I listened something about Titanium that I didn't like much. It's that all of a sudden –if you publish an application of the server, they come after you and charge you $5,000 of license. I think the licensing is not very clear when they...
Michael Kimsal: No, I've known a lot of people use Titanium over the years. I've never heard that. I mean, I didn't hear that. I read that story and that seem to be very much a rogue company trying to get money out of somebody.
And you may find other resources. Anybody listening or watching wants to tell me that I'm completely wrong. I still have faith in Titanium apps however as a company. I don't think that was sanctioned by them. I don't think they knew what was going on.
I may be wrong but I've done too much, and I haven't done that much with it but I'm on their mailing list. I get some stuff from them. I know other people that have been using it successfully for a couple of years and they've never reported anything like that.
Manuel Lemos: Yeah.
Michael Kimsal: I would say continue to give it a shot. Don't let that hold you back. But I would suggest to you that you try Windows 8 and build some Windows 8 stuff, partially because there's going to be much less competition in that store.
Manuel Lemos: Doesn't PhoneGap generate applications for Windows 8 from...
Michael Kimsal: If only there was some sort of way we could ask some engine that could search for information for it on the Internet. Now, let's see.
Manuel Lemos: There is a new one, called Google.
Michael Kimsal: November 1st, 2012 PhoneGap 2.2.0. We're proud to announce support for Windows 8. You can take your PhoneGap apps written to the Windows Store. There you go. OK, so PhoneGap then. That's... If you want to break my heart and it hurts me, that's fine.
Manuel Lemos: Why break your heart, you prefer Titanium anyway?
Michael Kimsal: Why not? Just because I suggest something and you continually stomp me down.
Manuel Lemos: No, I have not decided anything. I still have to make time to research. But I just did not quite like it. It's not even the amount. It's the surprise – when will they charge you, what amount they will charge you.
Michael Kimsal: They won't.
Manuel Lemos: And in the few... I don't know, I heard it in the TechZing Tech podcast. I think it was Jason Roberts that commented on it.
Michael Kimsal: It all came from one major... It came from one person's story and it made the rounds a few months ago.
Manuel Lemos: Actually, they are commenting on somebody else's story.
Michael Kimsal: Right.
Manuel Lemos: And you are right, probably that's a single case. I did not hear of any other cases.
But now that you mentioned it, what is your take on the PhoneGap versus Titanium. Why do you prefer Titanium?
Michael Kimsal: I wouldn't say I preferred Titanium. I've used Titanium a few times. I did one thing with PhoneGap, one sort of Hello World sort of thing with PhoneGap. So I cannot speak authoritatively on the differences of the pros and cons at all. So move on.
Manuel Lemos: Well, I talked...
Michael Kimsal: Touche.
Manuel Lemos: ...about it with Arturs Sosins. He said that Phone Gap was probably slower because it was some sort of proxy but that's all that we talked about. I'm not sure what is the...
Manuel Lemos: Well, actually, he talked to me about that a longer time than that.
Michael Kimsal: [Verbal Noise]
Michael Kimsal: I don't know. I don't know, I think you're really going out on a limb there. That's a pretty bold prediction. Are you sure? Is that your...
Manuel Lemos: What do you mean? Are you going get back to...
Michael Kimsal: Is that your final answer?
Manuel Lemos: LISP?
Michael Kimsal: I don't know. We might have something.
The one weird thing to me is that because we are a little bit more in walled gardens in the Apple's ecosystem, especially in mobile. And even Chrome in general, it just auto updates. If at some point, either one of these...
And I'm not suggesting at all that it would. But the degree to which we are all networked and we all have devices that in some sense controlled by other people auto-updating software, it could conceivably happen. That they could roll out something else, a complementary language very, very quickly.
Manuel Lemos: Yeah.
Michael Kimsal: And I don't think that would have been feasible ten years ago, five years ago. Well, I'm not... I just want update. Well, most of our software just auto-updates. Now, browsers typically would do that.
And mobile is getting larger and larger everyday. And I think it's even a bit silly to call mobile small screen because it won't be small screen for much longer. Because even the lower cost devices are getting larger screens.
And all that effort to make it responsive probably will not be so much worth as it is today because what we'll be doing is the same as you do for desktop. You just use regular CSS and assume a minimum size.
Michael Kimsal: Well, you know, I'll mention something very briefly that I saw I think on Reddit the other day. There was a link to a research video by Microsoft Research. They were talking about the latency of mobile devices and touch screens. I think it was an iPad but they weren't showing the name iPad on it. They were talking about touch latency, responsiveness.
Right now, most tablets and smart phones have a latency of somewhere - when you touch it, before there's a reaction - it's somewhere between 50 and 100 milliseconds. I think something as fast as 50 but the 100 is about the average.
And they demonstrated doing thing at a 100 and then at 10 and then at 1. And even at 100, you can tell you're doing stuff and you have to wait. Ten is pretty good, 1 is pretty much instant. When you’re interacting, you feel that way.
And they're talking about, what they're trying to... They didn't talk specifics but that's the goal is, to try to get that down, to get that latency down. The hardware is going to be part of that.
Is it just going to be hey, we're going have 10-gigahertz computers at some point, or 10 gigahertz of use and that will fix it? Or, will there be something that happens at the language level or the compiler level to make to support that? Because it's not all... It probably could all be hardware in some point but that seems wasteful. I think there's probably more we can do at the language level.
Manuel Lemos: That was yet another stab of Microsoft at Apple, right.
Michael Kimsal: There you go.
Manuel Lemos: Aww, you didn't want to say that.
Manuel Lemos: Well...
Michael Kimsal: On that bombshell...
Michael Kimsal: No. No. I'm sure we'll be talking about the future later on.
Manuel Lemos: Of course.
Michael Kimsal: In the future.
Manuel Lemos: Talking about the future, let's move on to one the final sections for which I recall I did not prepare, which would be to pick a couple of classes that were published in JSClasses site.
Michael Kimsal: Well, I got a couple I can mention briefly that I was impressed with.
Manuel Lemos: Let me just do something, mention some happenings, while you probably pick another of them there. You seem to have already picked. Let me just screen share something here about...
I just tweeted recently that, finally, the goal of the Innovation Award challenge of having 200 classes published in the JS Classes site was achieved. And starting in January, the Innovation Award that goes in PHP Classes since 2004 is going to start also in JSClasses site. That is just awaiting here to get started.
And other than that, I'd like to thank all the authors that submitted all these classes. There is a ranking here and as promised... let me just increase the font here so you can see their names – Arturs Sosins, Dixan Santiesteban, Mark Rolich, MarPlo.
Michael Kimsal: Mars Plo?
Manuel Lemos: Probably a nickname. Martin Barker. They all will be entitled to receive one wonderful – let me stop this screen sharing if I can, this is always a challenge – one wonderful...
Michael Kimsal: Woohoo!
Manuel Lemos: PHP elePHPant.
Michael Kimsal: Great.
Manuel Lemos: I think a great part of the contributors of the JS Classes site are also contributors of the PHP Classes site, so they will appreciate. So, all of you guys, thank you for your participation, it was very important.
Not just those ones but also the others that contributed to reach the goal of 200 packages, especially in the latest month that got a lot of many new packages that we are going to talk about now.
Manuel Lemos: Now, we have the like... Let me screen share the entries here. We can see a lot. This is probably also the result of encouragement of the systems and levels of missions where well... 14 I think packages. And many of them very interesting things. Michael, which ones do you think would be worth commenting this month?
Michael Kimsal: This month, the couple that jumped out of me. First one was Crosswords.
Do you have it up there? I can share. I'll share my screen. I think I can share my screen. Share what's on my screen. I'm hitting Share Screen, there we go.
Manuel Lemos: It's a bit retarded.
Michael Kimsal: Slowed it down, certainly. Can you see my screen there?
Crosswords.js - this is a... Crossword is not really the right word. It's more of a word find. Crosswords, you have the black and white squares. But it's still interesting. It's a Node.js sort of app, or it's written, run, in Node.js and you pass information via a command line. This is the actual code.
Manuel Lemos: Can you just increase the font a little?
Michael Kimsal: I can. I just did. I don't know why it's not there. It's from Igor Escobar and I don't have what country he's from offhand.
Manuel Lemos: He's from Brazil.
Michael Kimsal: Brazil. Brasil.
Manuel Lemos: I remember I actually talked with him. He promised he would send a lot of classes. So he's ...
Michael Kimsal: Cool. That's not some of the code there but the interesting, the easier thing that... You know, the idea for this, just look at the screenshot. So you'd say "Node.js or node.start.js. Here's the words and node game crossword."
Well, we can see the second -- I don't know if you can see it, I can't highlight here but second from the bottom, the very left side screen N-O-D-E down here if you see my mouse moving, I hope you can see my mouse. So the words are in there and then there's random letters in rest of the place. The GAME is up at the top right, G-A-M-E going down.
The second one that jumped out of me was JQuery Calx and this is from Ikhsan from Indonesia. Hello, Ikhsan. I've got his code up here just to give a quick example of this and I have not dived into it. I admit I was just attracted by the name and the description of it but the idea here– I wish I could highlight this one.
The idea here is that you write formulas in data format in the data attributes. So you can say... Why is that showing up there? Ignore. So you can say what formula should be applied to two data in this particular input. So we want to take – this should be formatted as a currency with two decimals and the formula over here is the price times quantity minus or times the discount.
So, interesting idea. I've had to deal with letting people define an input formulas in website sometimes and this is certainly an easy way to just tell somebody "Hey, make data dash formula equal something in the browser and then have a JQuery plug-in modified." So impressive, both of those... This month struck me is interesting.
Manuel Lemos: Yeah, actually this one by Ikhsan is from Indonesia. Well, what I noticed that is interesting – I don't know if you noticed or seen the code – part of the code was generated by Jison.
Michael Kimsal: No, I did not.
Manuel Lemos: Jison it's the equivalent of Bison for C or C++, I'm not sure. Basically, you provide a grammar and it will generate code to parse expressions, well, some language which in this case is those formulas.
Michael Kimsal: Yup.
Manuel Lemos: ...automatically evaluate the values of certain inputs, depending on others. Like, for instance, in e-commerce site, you can have the page that shows what you are ordering and they calculates the prices depending on quantities and whatever products you selected. So kudos for Ikhsan for that.
Well, on my part, I also would like to comment on a couple classes. Let me screen share here first. OK, I think I need to increase this.
The first one that I would like comment is this one Fifteen Puzzle by Mark Rolich from Armenia. Mark has been contributing lot of good classes. Somehow they are games or something like that. But in this case, it is a puzzle of 15 pieces around a board that you need to use the empty space to move the pieces. And all this is done with this object that he shared.
So it's a great... For those that would like, even if they are not interested in the game itself, they can take a look at the class to learn how to do several things like managing the events of the game and rendering the board. So this is an interesting classes for everybody to study.
Other than that, I would like to comment on another class from MarPlo. I think this is his nickname. He's from Romania. This one is named Volume and Surface Area Calculator.
This is an object that there are some calculations on solid objects, provides several measures of the objects. Well, if you need to deal with 3D objects and somehow need to have these calculations in your application for some reasons, you can take a look at how this was done by MarPlo. So kudos for MarPlo also for his contribution.
Well, regarding classes this month, I think that's all for now. Let's stop the screen sharing here if I can.
And well, next year, as I mentioned there will be the Innovation Award. I'm still asking several companies that could be potential sponsors. And I have already contacted a couple. One of them is a very famous WebDev Publishing. I don't know if you are familiar with it.
No, you are not familiar, right?
Michael Kimsal: No, no, not at all.
Manuel Lemos: Well, WebDev Publishing as you may be aware is the company that Michael founded –for publishing magazines. You'll be contributing a subscription of the JSMag, right?
Michael Kimsal: Yes.
Manuel Lemos: Yeah, there is also sponsorship from Packt. They also sponsored PHP Classes Innovation award. So they'll be giving away a book which would be printed or e-Book to one of the winners. And I have several other companies that I've been trying to contact. But since this is a recent event, only like a couple weeks, just need confirmation.
Michael Kimsal: Only the cool companies are in.
Manuel Lemos: Yeah. So only those that actually replied before.
They gave the confirmation but I expect several other cool companies that can also participate as sponsors. What they will get is good exposure to their products, as the JS Classes community grows, they'll get exposure.
There is no money involved in the sponsorship. All they have to do is to give away a prize and deliver it to one of the winners that is nominated in a month. This is a initiative that has work well in PHP Classes site because it gave a lot of exposure to the work of the developers that submitted innovative components, as well to the sponsors that gave away prizes.
So, any other company that eventually maybe, somebody that their company maybe watching this podcast, feel free to contact me if you want to become a sponsor.
Michael Kimsal: OK, OK.
Manuel Lemos: Well, given that, let's move on to one of our final section on which Michael will comment about the upcoming topics articles on the JSMag magazine.
Michael Kimsal: Well, we had... I was actually looking this up because it looks like somebody has... I'm getting out of topic here. Sorry.
There's a couple of pieces that I know are going to be out. One is a piece from Jeanine Meyer on moving images on the screen and some techniques for following images around as you move your mouse.
So those are what I know so far. We've got a couple of others that we are trying to wrap up in the next couple of days to get out in early January. So, before I commit myself to anything else, I'll just say those are what we know for certain.
Manuel Lemos: Yeah. Well, all of that is great. Other than that, I think you've been trying to hint to us about something you maybe working on that we can read in subtitle. There's domain in there.
Michael Kimsal: Oh, yeah, yeah.
Manuel Lemos: Oh, that!
Michael Kimsal: That, yeah, I totally forgot about that. Yeah, as a matter... Well, you can go to domain name if you like. I'm not showing the screenshot here. But this is a... Actually, really, I'm looking for feedback on this idea more than anything right now.
So that's always top of mind for me and I've been, really, second attempt to doing this. But I've collected, I am collecting a lot of my thoughts and a lot of questions that I get from people. One of the things that it came out of this a few years ago was Indieconf. And now, another thing's coming out. This is an attempt at an eBook or a book, if you will.
So, if you're interested in taking a look at, if you're a freelance and you've got some questions, please feel free to reach out to me about the website and I can send you an initial draft or part of it. You can tell me, is this helpful? Is this not helpful?
The few people that I have had some feedback from so far had said, "Yes, this is helpful." But I can certainly get some more opinions and feedback from some people as I continue to write.
Manuel Lemos: You had another domain in there in your subtitle. Was it the same thing?
Michael Kimsal: A FreelancePath perhaps?
Manuel Lemos: Yeah.
Michael Kimsal: Yeah, I had that as well too. That is a community that I'd set up also for people who are freelancers than they would like... There are some freelance communities run there. I'd like to think that ours is, while it's small, we do help each other a bit more than perhaps some other communities with a lot of people.
So, that is... I won't say too much more about that. But if you're a freelancer, please feel free to reach out to me directly. Go to freelancepath, go to the current domain that you see. Just reach out and let's see we can help each other.
Manuel Lemos: Well, that's great to know. I'm sure many of the listeners of this podcast are also freelancers. And we really appreciate that.
Michael Kimsal: I hope so.
Manuel Lemos: I'm sure they are. Many of them, probably the majority, I don't know.
Manuel Lemos: Well, on that note particularly this podcast, this will be published already in 2013, for sure.
And so I wish you all a great 2013. I'm sorry for all those that were disappointed the world did not end in December 21. But on the positive side, Russian President Putin has said he already knows when the world will end and it's approximately four billion years, so do not be disappointed with that. The world will end anyway. It's just a matter of time.
And with that, that is all for now. I hope to see you back in 2013.
Michael Kimsal: You will. Adios.
Manuel Lemos: Bye.
No comments were submitted yet.