This is the June edition of the Innovation Award podcast hangout recorded by Manuel Lemos and Arturs Sosins to comment on the outstanding features of all the past month nominees and winners PHP and JavaScript packages, the prizes that the authors earned, starting with the nominees from the month of March 2015.

Listen to the podcast, or watch the hangout video, or read the transcript to learn why the nominated packages were considered to be innovative.

Introduction

This is
the latest podcast hangout episode on the PHP Innovation
Award and the JavaScript Innovation
Award about the nominees of March 2015. We comment only on
past nominees to avoid influencing the voting results. This way we are only
talking of packages published already in January. The nominees of
January were voted on February. In March the results were
announced.

You may listen to the audio recording, or watch the
hangout video, or read the transcript below.

JavaScript Innovation Award Nominees of February 2015 (00:20)

[Music]

So with this, we are going to move on with the next section on which we comment about the Innovation Award, first of JS Classes. OK, let me share the screen here. So we are going to start talking about the winners of the Innovation Award edition of March, which were voted in April and in May, the results come out.

So since we have already posted the results, we can talk about these packages. Arturs, which packages would you like to comment first now?

Arturs Sosins: OK, let me comment on first one is Adblock Detection for Google AdSense, developed by Suresh Kumar from India.

What this package does, it tries to check if there any JavaScript elements in your web page that are trying to load AdSense, because if they are not there, then probably there were stripped out by an Adblock.

This package also reports it to Google Analytics. So inside, Google Analytics, you can see how many visitors of your website have enabled ad blocking and disabled AdSense. So you can see how many of your visitors can see your ads, and then you may try to think of other ways to monetize this.

So that's why I really like this package from Suresh.

Manuel Lemos: Yeah, it can be useful for knowing which users are presenting Adblock. There are some users, not many, probably like 10% of the users use Adblock. They don't like ads. It's OK, it's their option. They are not supporting those that produce content and need the money generated by the ads. But OK, that's a different discussion.

Anyway, in the case of this class, it is useful, as we described, to at least know if Adblock is being used to detect blocking of AdSense ads.

Arturs Sosins: Yeah, at least you can try thinking about other... with it.

Suresh Kumar got one book of choice by Packt for this package.

Second package I want to comment on is JavaScript HTML5 FileReader, which basically uses not like a standard HTML file input but try to use HTML5 FileReader API to retrieve contents of the file. So it would provide even more than if you use file input, you usually simply upload it, but with it, you can use the same file input to read the file in the same web page without even yet uploading it, so you could provide display of thumbnail of the image you are going to upload or display contents of it.

I recently also used a similar app I was developing, so I tried create addition, and this package was simplify the work that you would need to check availability and works with files.

So it was developed by Andras Toth from Hungary, and he got downloadable e-book of choice by O'Reilly for this package.

Manuel Lemos: I also would like to comment on a couple of other classes. Let me share screen here. Classes objects, and this one again is from Suresh Kumar from India. He has this class, Browser Specific CSS, which uses a clever trick in the same page. You can use different CSS sets of definitions depending on the type of device that they use.

So he defines certain styles. It's probably better to look at the code very quickly. We don't have much time. Oh, I forgot to log in because I was in another machine.

So OK, here we go. So this is class. Oh, it's minified. You're not going to see much. I have to un-minify it. Let's see. I don't know if there's a non... Yeah, he did not provide a regular class, but it defines some sets of styles, and depending on the platform, it will match the names of the styles with the type of browser.

If you are in Windows, if you are in... As you may see here, so depending on the browser, you can have styles that match the different browser and use JavaScript to achieve this effect, and it was quite interesting.

Now, moving on, the other class that I wanted to mention is one called Encyclopedia. This is not very trivial to understand. It's from Ryan Silalahi from Indonesia. He provides an interface to access I would say a large set of valid pair of objects but it employs a trick to minimize the loading of everything into a large object.

So it can load small objects that provide access to parts of the bigger object, which could be an encyclopedia with names and their respective meanings.

JavaScript Innovation Award Rankings of 2015 (07:19)

Manuel Lemos: About the JavaScript, let's see how it is going the Innovation Award ranking for 2015. Sharing screen here again.

Well, so far, this includes already the winners of April because the results come out. So far, Andras Toth is leading with three packages and ten points, followed by Suresh Kumar that risen also to the first place again with three packages and ten points. Then, Gianluca Zanferrari with one package and seven points, Jackson Knowlton (one package and six points), Stephen Chapman (one package and four points); then several other authors with one package and three points.

By country, the rankings are still pretty much the same, except that instead of names of authors, we have countries because there is only one author per country. Unlike PHP Classes, JS Classes is not as popular, but we still quite have a nice collection of packages.

The first one is Hungary with three packages and ten points. The second one... well, actually, tied... is India with also three packages and ten points; then Netherlands with seven points; United States, also seven points but two packages. Then follows Australia with one package and four points and several other countries with one package and three points.

PHP Innovation Award Nominees of March 2015 (09:13)

Manuel Lemos: Well, now, let's move on to the Innovation Award of PHP. We are going also to talk about the Innovation Award winners of March. We have ten nominees that were nominated in March. They were voted in April, and the results came out in May.

Let's comment about a few. Arturs, which ones would you like to start to comment?

Arturs Sosins: OK, the first one I would want to comment is PHP CACERT Self-Signed Certificate developed by Vladimir Zurita from Chile.

Basically, usually there is an organization that use in sites to verify CACERT certificates. But in this case, this PHP package can create their own certificate and sign in themselves and verify. And as I understand, even do it for other domains. So it's probably would not be signed or verified in the browser, but it would work for testing purposes definitely. So that one is great.

Next package I wanted to comment on is XBenchmark, which is really useful for benchmarking or trying out your scripts in different performances. It was developed Xavier Perez from Spain, and it could create logs with access to the script and up to different kind of metrics there like time it took for scripts to execute, amount of RAM it used, URL, all the parameters that you passed. So works really great for trying out, experimenting with optimizations and making several iterations.

Manuel Lemos: Actually, this class was nominated more because it can measure the performance of the whole script, not just parts of the code.

Arturs Sosins: Or request. Request, basically, yeah.

Manuel Lemos: So it uses a script that uses that setting auto_prepend_file, so once the script...

Arturs Sosins: ...include any additional code, basically.

Manuel Lemos: Yeah, exactly. So it can start to measure the benchmark from beginning to end. So it uses a register_shutdown_function to determine when the script has finished. So it is a bit different than the usual benchmark classes.

Arturs Sosins: Yeah, and Xavier got one downloadable copy of CodeLobster Professional for this package.

The next one I wanted to comment is Recursive Template Engine by Nadir Latif from Pakistan. And what this class does is it implemented a template engine which tags will be replaced in the curly brackets but it can also include references to other templates, thus including templates under template. Hence the name, recursive template.

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

Manuel Lemos: It seems that recursive templates are not really new, but what it did is different to these other nominations, that if you have a placeholder and you have not assigned a variable to that placeholder, it will assume that it is an external template. So it takes the name of the placeholder and gets the actual external file. So this is great if you are building templates that may be split later into separate parts rather than loading large variables.

Arturs Sosins: Yes, so you don't have to define templates separately. It will automatically load the values. That's great.

So next class I want to comment is PHP Server Class, that basically implements a HTTP server like in the PHP, which would work on specific port on the local machine. It was developed by wapmorgan from Russian Federation. I think it could also serve PHP files, right?

Manuel Lemos: Yes. There are other HTTP server classes but this one is very complete. It does much more than the built-in PHP...

Arturs Sosins: HTTP server?

Manuel Lemos: ... HTTP server, and not only can load the PHP files but it supports other things that usually you don't have like virtual hosting. You can have multiple domains served by that class.

Arturs Sosins: Yes, so it's kind of full HTTP server based on PHP. That's great.

Wapmorgan got one copy of Zend Studio for this package.

The next package is TAD, developed by Jorge Cobis from Venezuela. There are lots of systems that are time or attendance-based that register when workers, employees, come to work and go home.

This package can work with them using SOAP requests. And it could manage different users and manage their data and the works. So basically it implements the protocol that usually these devices use. Right?

Manuel Lemos: Yeah. This is very specific for certain type of devices that measures the attendance of people, for instance, in companies. So it can use PHP to control those devices that keep track when people enter the company and leave the company. It was really unusual. Although it's very specific problem. Not useful if you don't have one of those devices in your company.

Arturs Sosins: And he got one subscription to the PDF edition of the PHP Architect magazine for this package.

That's all on my part.

Manuel Lemos: Well, on my behalf, I would like to comment on a few classes as well. Let's move on.

The first one that I'd like to comment is one that is not trivial and not the type of use that you want to have in your everyday application, but still is innovative because what it does is that it can parse the configuration of DNS, as implemented by the Bind program. Bind is a popular DNS server program, very old, and it can parse the values, extract the values from Bind 9 DNS configuration.

And wait, we jumped here, and for this Jan picked one copy of Komodo IDE, which is a nice choice.

The next package I want to comment is again, Dave Smith is appearing everywhere, which is a great thing because he always sends great contributions. In this case, he sent a package for emulating a slot machine. It can emulate the pulling of the handles and discounting credits and so on. So it could be used if you like to present a virtual slot machine in your Web browser.

For this, Dave picked one downloadable copy of PhpED Professional, which is also nice IDE prize.

The next package that I would like to comment. This one, at first it seem it would be very trivial, but I took a closer look, and "Oh, there are some details that I was not aware." The class seem to be too simple, but what it does is it calculate the age of your dog. I thought that if you have a dog and you want to calculate his age relatively to human years, you just multiply by seven, right?

Arturs Sosins: It seems now that the size seems to matter and other stuff.

Manuel Lemos: Exactly. I was not aware of that, and it seems there is a bit more complication to make an accurate guess. So this class, The Age of My Dog, improvement by Roberto Aleman from Venezuela implements that logic and even provides AJAX-based user interface for you to present that in your page and show the real age of your dog.

For those that like dogs, probably this is nice. Do you have dogs, Arturs?

Arturs Sosins: Yeah. I just checked. It's now 70 years old in human years. So it's really old dog.

Manuel Lemos: Is your dog healthy, or maybe dying?

Arturs Sosins: No. Well, it was always kind of slow and... but it's healthy. Still playing out. Still no problems.

Manuel Lemos: I know that for people that have dogs, their dogs are also like children, so they care too much. They regret the fact that they don't live as long as humans.

Well, for this Roberto Aleman was the first to pick the SourceGuardian PHP Encoder tool as a prize. Congratulations. We didn't have this type of prize before, and there are commercial PHP encoder tools, but this is the first time we have. So it was a great prize for Roberto to pick.

The next package that I wanted to comment is PHP Snake Game. Well, actually, I have to learn how to play this game. Then, I realize that it was not so trivial to implement. It was a package implemented by Tomas Pavlatka from the Czech Republic.

Tomas had been also sending nice classes, and it is always great to send classes even if they are games. But in this case, this one is the PHP Snake Game. It was interesting. You even have to learn about this game that was not as trivial as I thought.

And for this, he picked one copy of VS.PHP, which is an extension for Visual Studio to provide PHP specific resources.

And the last one that I wanted to comment, this one also looked very simple but in the end, I realize it was not that simple. It's PHP Exif Orientation Correction, developed by Pablo Matias Perrone from Argentina.

What it does is to check if the images are with the correct orientation. It checks the Exif information that is present in, I think it is in JPEG images. If it is incorrect it may mirror the image or rotate it depending on the orientation value, so it will fix it.

It's probably useful if you have many, many pictures that are wrong, are with the wrong orientation.

Arturs Sosins: I was always wondering how Facebook does it. Now, I know that sometimes if you upload a picture in the wrong orientation, it rotates it and displays it correctly.

Manuel Lemos: Yes, because you may need to rotate or mirror the image to show it correctly.

So congratulations to Pablo Matias Perrone for his package.

PHP Innovation Award Rankings of 2015 (22:37)

Manuel Lemos: Now, for the Innovation Award rankings, let me go back here. So far, the rankings for 2015 already include the nominees, the winners of April, right? So far, Dave Smith is already ranking number one, with 2 packages and 19 points. The last month, he earned many points because there were so many nominees that the winner gets much more points than if there were less.

So he is now number 1 with 2 packages and 19 points, followed by Mohammed Al Ashaal... I guess he's from Egypt... with 1 package and 16 points; then followed by André Liechti with 2 packages and 16 points, so he's tied in second place; then, Matthew Knowlton with 1 package and 14 points; then, wapmorgan 2 packages and 14 points.

Manuel Lemos: With 1 package and 11 points, and then Abius X from Iran with 1 package and 11 points.

So the Innovation Award winners ranking for 2015 is getting very interesting. Let's see how is the ranking by countries. And this is getting even more interesting because now we have many authors from different countries, but so far, Russia is leading with 5 packages and 41 points, followed by the United States with 3 packages and 33 points. Then, Egypt (3 packages and 28 points), Nigeria (2 packages and 20 points), Pakistan (2 packages and 19 points), Switzerland (2 packages and 16 points), Germany (4 packages and 15 points), Brazil (2 packages and 15 points) and Venezuela with 2 packages and 11 points, and finally, Iran with 1 package and 11 points.

As I mentioned, this is getting very, very interesting. Given that the following months, we have lots of nominees to rank, to score for the Innovation Award, this competition will get even more interesting.

Arturs Sosins: So these results already include the latest winners, right?

Manuel Lemos: This ranking includes the April winners. But then, in May, there were also like 15 nominees. Well, in reality, there was a sort of campaign in PHP Classes that has been increasing over time to encourage authors to send innovative packages. Not just send regular packages, send packages that are innovative. Fortunately, they are enjoying a lot. They are participating a lot and you can see that many, many good packages have been published.

I know next month, we have even more work to comment about all the 16 nominees that were presented. You can see them here. But let's deal with one month at a time.