PHP Classes
elePHPant
Icontem

Help Testing PHP 7 to Anticipate Bug Fixing - Lately in PHP podcast episode 56 - PHP Classes blog

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Blog PHP Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Help Testing PHP 7 to...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)  

Author: Manuel Lemos

Posted on:

Categories: PHP Innovation Award, Lately in PHP Podcast, PHP community

The PHP 7 final release with still take a few months to happen but Rasmus Lerdord the creator of PHP is already asking the community to help testing PHP 7 as it is now to anticipate the fixing of eventual bugs.

This was one of the main topics commented by Manuel Lemos and Ernani Joppert in the episode 56 of the Lately in PHP podcast.

They also commented about the proposals for PHP 7 of having scalar type hinting and the combined comparison operator, tips for adapting existing PHP sites to become mobile friendly, and the PHP and JavaScript Innovation Award Winners of 2014.

Listen to the podcast, or watch the hangout video, or read the transcript to learn more about these interesting PHP topics.




Contents

Introduction (0:20)

PHP 5.4.37 and 5.5.21, PHP 5.6.5 Released (2:08)

Help Testing PHP 7 Using Vagrant Boxes provided by Rasmus Lerdorf (3:28)

Scalar Type Hints Latest Proposal (8:33)

Combined Comparison Operator (18:55)

10 Tips to Adapt PHP Web Sites for Mobile Devices (22:18)

PHP and JavaScript Innovation Award Winners of 2014 (38:07)

JavaScript Innovation Award Winners of November 2014 (44:40)

PHP Innovation Award Winners of November 2014 (52:45)

Conclusion (1:10:24)


Contents

Listen or download the podcast, RSS feed and subscribe in iTunes

Watch the podcast video, subscribe to the podcast YouTube channel

Read the podcast transcript


Click on the Play button to listen now.


Download Size: 61MB Listeners: 196

Introduction music Harbour used with explicit permission from the author Danilo Ercole, from Curitiba, Brazil

View Podcast in iTunes

In iTunes, use the Subscribe to Podcast... item of the Advanced menu, and then enter the URL above to subscribe to this podcast.

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.

See the Lately in PHP podcast play list on YouTube and Subscribe to this channel there.


Show notes

Introduction (0:20)

[Music]

Manuel Lemos: Hello. Welcome to the Lately in PHP podcast Hangout. After a long time preparing this recording... this time here with Ernani Joppert. He returned recently from the desert.

[Laughter]

Manuel Lemos: He has been working very hard. Hello, Ernani. How are you doing?

Ernani Joppert: Hello. Doing great. Long time since my last episode here, but willing to comment and be able to participate. Thanks for the invitation again. It's an honor.

Manuel Lemos: Yeah, I know you are getting married. This shall be a very important time in your life.

Ernani Joppert: Oh, yeah. Of course.

Manuel Lemos: So thank you for taking your time. This month, we have a special episode, not only because we are going to talk about very interesting PHP topics, but we are going also to talk about the winners of the Innovation Award, the PHP Innovation Award, that is organized by the PHPClasses site.

That is why you may see here, let me pick a trophy so you can see it even closer. This is a trophy for the winner of 2014.

We'll talk more about this ahead, but the winners will get a trophy that is a symbol of what they won. They also get the elePHPant plush mascot that is behind. The other trophies that you may see there are for the winners of the countries, the country that won, in which case it was Italy. We'll get back to that ahead.

PHP 5.4.37 and 5.5.21, PHP 5.6.5 Released (2:08)

Manuel Lemos: Now, we're going to start talking about the regular set of PHP topics, things that have been happening in the latest month.

So, we are going to start by the usual releases of PHP. Basically, we have a release for PHP 5.4.37, which it is basically about security-related fixes.

Then, there is also PHP 5.5.21 that has the regular set of fixes besides the security ones that may have applied to 5.4 and includes several other fixes that are not security-related. Also yet, 5.6.5 release with also very similar set of fixes. I don't think there are many new features being implemented. This is the usual maintenance release.

Help Testing PHP 7 Using Vagrant Boxes provided by Rasmus Lerdorf (3:28)

Manuel Lemos: So about this, there is not really much to say, so we are going to move on to the next topic, which is about a call from Rasmus Lerdorf, the creator of PHP, to help testing PHP 7.

As you may know, PHP 7 is being developed, but there are several features that were already implemented. And you can now help test those features because the sooner developers get feedback, the sooner they start working on fixes of those bugs, so when the time comes...

I think the planned release date is for October 2015. It was settled already sometime ago. Of course, this is a tentative release date. We know that in practice, things might get delayed, but that's the planned release time.

And, as I said, Rasmus is calling for everybody to help. Has provided some Vagrant Boxes that you can deploy and help in the testing of the PHP 7 as it is now.

Well, personally, I never used Vagrant but I understand it is a tool for deploying machines, could be physical, could be virtual. It could use one of those virtual environments like VirtualBox and deploy it.

Here, Rasmus has provided more detailed instructions, so you can go there. Let me scroll here. It's too large. You can go here and help testing PHP 7, the latest releases.

Ernani, have you ever used Vagrant to deploy any machines?

Ernani Joppert: No, I have not yet, I've seen Vagrant being used in some places, but actually, I've never had the chance to use it in a real development or deployment task. But I've seen... I've heard people using it and it helps on time-consuming tasks as well as Puppet to manage packages and to apply fixes within a machine.

It is nice to see PHP participating on this scenario as well.

Manuel Lemos: Yes, this is a tool that can be used to deploy many types of environment, not specifically for PHP, but it is useful. Personally, I did not have time to test PHP 7.

I think it's too early, but I may try it here in my local development environment just to see if it is working in a way that is much faster as it is expected, because the greatest improvements that are expected for PHP 7 are about speed, of course, other features that have been requested for a long time, but speed is probably the improvement that will appeal more to the developers that may consider using it.

About that, there is not much more to say, and it show...

Ernani Joppert: It seems it's a new feature, right? So it may have lots of benefits, but since we haven't had the time to test it, we can't say much about it so far.

Manuel Lemos: Yes, because many of the planned features are still being implemented. I think for now is to test it on existing PHP applications, so you can detect bugs.

It's not really to test the new features. It's just to prevent the fixes that may be necessary for this new release are postponed. The sooner they are done with the fixes, the better. So that's why Rasmus suggested that you test it with WordPress, Drupal, Moodle, and any other platforms that are being widely used so you can iron the bugs as soon as possible.

Scalar Type Hints Latest Proposal (8:33)

Manuel Lemos: Given that, let's move on to the next topic, which is about new features being planned or voted already. One of those features... let me share the screen here... is one that has already been proposed, but it was not approved or at least did not move on, which is to have a scalar type hints.

Type hints, as you may remember, are actually information that you can put on things like function parameters, so when you execute that code, PHP verifies if the parameters being passed are of the types that are expected.

So far, it has been working for objects and arrays but not for scalar types like integer, float, string, and bool. So this proposal is yet another attempt to define an implementation for the way this type hints will work for scalar types because previous attempts were not accepted, did not move on.

Actually, this proposal is quite complex. We are only going to give an overview of what it is about. For instance, you have here a class named elePHPant, and it takes several parameters, one of each type. If you call that call that class with the right parameters, it's all fine. So nothing will work.

If the parameters do not match, there may be some type casting, depending on the case, depending on some options. Or it may throw a fatal error. Actually, it will be a fatal exception. And then, they will have this declare statement that you can restrict the section of the code on which the strict types will be evaluated.

This proposal is much more complex than this. I'm not going to enter much into this because even I'm not well aware of all the details, so it's better not tell something that may be inaccurate or else the police will accuse me for not being accurate.

So anyway, what I was going to say about that is that the different parts of this proposal are being voted now, at the time of this recording. So by the time this show is published, it may already have been finalized, the voting process. There are several parts of this proposal. I'm going to just show you how the voting is going, because some votes on PHP requires two-thirds to approve the proposal.

Ernani Joppert: Right.

Manuel Lemos: As you may notice, I've been scrolling this proposal quite far, and it ended only now. Well, there are several parts of this proposal that are being voted. Some parts seem to be approved... I mean, are going to be approved because they already have the necessary majority of the votes, but other parts are not yet certain.

Well, let's wait and see while this comes because this is yet another attempt to pass a proposal for similar feature of having type hinting.

Well, type hinting, as you may be aware, it's sort of inspired on other languages that have strict typing.

Ernani, you have been working with Java for a long time. Java is a more strict type language. You are so used with the strict typing. Do you think any form of declaring types or having strict typing in PHP is good? Or maybe in even in project, you would probably not use it?

Ernani Joppert: Yeah, I think it can benefit several approaches. Let's say for declaring objects like in a ORM solution, it would benefit because then you can describe value objects or DTOs that can have specific types and can be used to serialize into a database table, or using a class which then convert into SQL directly, not by guessing the data type that you're placing or having the user specify which data type that field has in a sort of annotation or in a sort of different scenario.

I think I've never seen doctrine how it is implemented. I don't know how do they specify the data types of specific objects that is retrieved and inserted into a database. But I bet that they have a sort of description that matches between fields and the data types of those fields in order to translate the database.

I think strict type would benefit into those scenarios. This is the first one which comes into my mind and that enriches the whole of PHP language by far. So I like to see that...

Manuel Lemos: Yes, but in this case, strict typing is to verify if you are passing the correct types to the functions or so, or things like that.

Ernani Joppert: Yeah, yeah. Imagine if you are constructing a DTO or a value object and within that constructor, you specify some specific data types to pass on. Then, you can catch specific exceptions on that to avoid problems within the runtime.

So I think it can benefit on that scenario as well, because you can then identify potential errors within PHP and not having to see if data was misinserted into the database table. You know sort of.

Manuel Lemos: Yeah, in this case, it's to verify if you're passing it. It's not to declare the types. It's just to verify if they are passed correctly. If you just wanted to declare, you could put the main annotations or in comments like it is used today.

It seems the concern of those that are against type checking at runtime is that it will add overhead because unlike in Java which is type checking is done at compile time, in PHP, it is done at runtime because it is a dynamic language.

Ernani Joppert: Right.

Manuel Lemos: You cannot be sure of the types, of values that are passed to functions, for instance.

In this case, I think the people that are against this are concerned that they impact the performance. But anyway, this is optional. You can put the type hints there or not. If you are concerned with performance, you just don't put them there. I think even if they are there, I'm not sure if one of those declare options can disable them at runtime, so they do not impact the performance of production environment.

Anyway, do you think even impacting the performance that would be useful, or maybe it would not pay that performance penalty?

Ernani Joppert: No, I think it can be used for TDD purposes as well because you need to build some rich test cases. And by type checking things, of course, your tests will fail more, but you will have the ability to build a better code.

Yeah, I think it can happen to cause overhead into a production environment, but of course, when you're benefiting from that checking, whatever benefits comes on something which is behind of it. And you may have to estimate the overhead causes because it's a trade-off. You have to ensure that this is a good trade-off when you're implementing that in PHP.

Given that this is a proposal to be approved, I would say caution. But it's nice to see the language enrich itself, and I'm always up for such thing. Of course, in the end, it's a choice of the developer to use it or not. So giving options is a good thing, if you know what you're doing.

Manuel Lemos: Right. Well, let's see how this goes. This is yet another attempt to propose a feature like this, so let's see how the voting process comes out and what will be approved or not.

Combined Comparison Operator (18:55)

Manuel Lemos: So moving on, on the next topic, let's talk about yet another proposal. This time a simpler one... hopefully, not as polemic as the type hinting one. This one is called Combined Comparison. They call it Spaceship because they implement a new operator that is like this. They say it looks like a spaceship.

Basically, it will allow to compare two values. If the first value is less than the second, it will return -1 . If the two values are equal, it will return...

Ernani Joppert: Zero?

Manuel Lemos: Zero. If the second value is... The first value is larger, it returns 1. And this is meant to be used, for instance, in callback functions for the sorting functions that PHP implements and allow to pass a callback function that will determine which element is ahead or behind in the final result of the comparison that is necessary to sort the elements, like using the usort function.

I think this is useful. Let me see, I'm not sure if that voting already ended. Most people that voted in this proposal have voted for this feature. So it looks like it will become part of PHP 7.

I don't know, Ernani, have you been using any sorting functions that you need to pass a callback function to define how the values are sorted?

Ernani Joppert: Yeah, I think I've done that before. I'm not sure if in Java, in PHP or in both languages. I can't recall. But those things save time. Having to compare every single data in a complex way sometimes causes pain.

And having that return the equal or different or greater than or lower than single operator to ensure that ordering stuff will happen in a great scenario and not caring about data types because it can be used by floats, integers, strings, object, arrays, whatever, it saves time for the developer.

Sometimes, deadlines are the crucial things, so whatever implementation that helps the developer to save time, at least on the first batch, on the first iteration, it is a good thing to have implemented. So I would probably vote into that, to be implemented. I like what I see.

Manuel Lemos: Yeah. Well, that's great.

10 Tips to Adapt PHP Web Sites for Mobile Devices (22:18)

Manuel Lemos: Now, moving to another topic. This time, it is about... let me share the screen here... an article that I wrote that in reality, it is about an initiative that I've been working on for the last three months to make PHPClasses responsive, adapted to look better on mobile devices.

So the article, I actually called it "10 Tips to Adapt PHP Web Sites for Mobile Devices". The article, first, it comments about why you should make your sites mobile-friendly.

Last year, I inquired users about if they would be interested to have a mobile-friendly version of the site, because most users access site just to download stuff. So they are not in their mobile devices. They are in their desktop computers, on which they use to work.

But only a few users expressed any interest. And in practice, 92% of the users are accessing the site via desktop computers. So only 8% use mobile phones and tablets, but still it was an increase from last year. There were only 6%. So there is a trend, probably not so strong on this type of site, but many sites now, there is more visits by mobile users than desktop users. It all depends on the type of the site.

So the idea is to make it mobile. But there was an additional factor this year because Google warned the sites that are not mobile-friendly will suffer some kind of penalty.

Anyway, the article tells if you are going to make the site mobile-friendly, do it for users, not for Google.

Ernani Joppert: Yup.

Manuel Lemos: Actually, Google is encouraging Webmasters to make their websites mobile just for the sake of the users. So if you do that effort, you'll benefit eventually from some traffic increase in the future. We don't know yet. Google does not pre-announce any updates.

But Google last year had been making so much updates to their algorithms that have been affecting the traffic that sites get, that it's better to act ahead than wait for Google to do whatever the changes that they want to perform on their algorithm.

So the motivation should always be to provide a better user experience for users. Also...

Ernani Joppert: Yeah, and simply because you do... If you, within PHP Classes, you do have nice articles such as this one, people may be on their way to their home, or on their way to their work, and they are getting emails from you, so they may want to read those articles. And they must have a good experience within their mobile devices, either a cellphone, a smartphone, or a tablet, and that is a trend.

I feel that if you provides useful information, if your website provides useful information to the user, it's better to have it mobile-friendly, and to have mobile-first strategy.

Manuel Lemos: Yeah. We don't know if the users with mobile devices were not coming to the site because it was not mobile-friendly, or because they just do not access sites like this on mobile devices, so it's better to do this effort.

The idea of this article is to basically share what I learned in making this site mobile-friendly. Basically, there are three ways to implement a mobile-friendly site. Create an alternative mobile site and redirect mobile users there. Or you can implement what is called dynamic serving, which is basically the same URL serve different HTML depending on if the user is mobile or not.

And the third option is to implement a responsive approach which is basically the same HTML for mobile users or non-mobile users, but there's some additions, like media queries to adapt the contents, so it renders well on different screen widths. Basically, that is what I've been sharing in this article.

There is a fourth alternative which is to build a mobile application dedicated to whatever the device the user is using, but that is not really a mobile site. It's totally a new project, but it is always a possibility that web site owners should consider.

In this case, with PHP Classes, I have developed a responsive approach because it is one that takes less work. Given that you already have a site, you are not starting a site from scratch, going through the responsive approach is better in terms of less work.

Maybe, probably, it will not be the best user experience, but given that all these efforts take too much work, this is probably the approach that will get results sooner.

So basically in this article, I wanted to present ten tips to make a site responsive. So this is like what strategy I follow, what I learn from it. Basically, if you have a large site, you probably need to start your work for the most visited pages because all this work will take a lot of time and probably would not get results sooner that impact most of your users, if you do not have a strategy to start with most visited pages.

The article gives all the information where you can learn about what are the most visited pages. It recommends also the Chrome, or Firefox developer tools to preview your page on small screen so you can see how they look in those mobile devices.

Then, some information about adapting the viewport to the mobile device screen size. Then, once we have done that, you have to start the actual work of changing your HTML.

First, you should start with your page header and footers because they are common in all pages, and if you start from there, you can impact your users sooner rather than later.

Then, it give some things about turning Web navigation bars into menu buttons because some large navigation bars may not fit in small screens, so you can create many buttons that show all the options when you click on the buttons.

It also teaches a sort of a trick that you can implement menu buttons without having JavaScript. You can use some checkboxes to toggle the menus to appear or disappear when you touch the menu buttons.

Then I talk about what you should do when all your information does not fit. You should start sacrificing less important information until the information you have fits on the screen.

Then I talk about using a tool that Google provides which is the Google Page Speed Insights to figure the pending issues that you need to fix because once you start fixing the mobile, you think you have your work done, but then you probably have missed something. This tool, Google Page Speed Insights can help you to figure what was wrong.

And then, it starts also giving some hints about images because sometimes images do not fit on small screens. You need to make them scale dynamically. So it teaches about some media queries that you can apply to reduce the images and keep the proportions.

Also, another tip that you probably will find in the complaints of the Page Speed Insights, which is the padding around buttons and links. If two buttons are too close, Google will complain because the user may use his finger and hit the wrong link because the buttons were too close.

Ernani Joppert: Yup. You have to care for pixel density and make sure that user can tap a specific button. It's not that small.

Manuel Lemos: Yeah. You don't need to do much. You just need to add enough padding around your elements if you have the links or buttons that are too close.

Then, finally, used it well, Google Webmaster Mobile Usability reports because it gives you an idea how many pages you have that are still missing. Here is a sample report of that Google Webmaster Tools about mobile usability.

In this case, at this date, there were almost 5,000 pages with errors. Then it starts reducing as you fix your bugs, so you have a good idea of how much work need to be done.

Basically this is just to give several tips that I wanted to share with everybody that is working on adapting a site to make it render or appear better, provide a better user experience on mobile devices.

Ernani, I don't know if you have done any effort to convert any site to adapt better to mobile devices. What do you think about these tips? Were there any tips that I missed that you thought would important? Or would this be enough?

Ernani Joppert: No, I'm sure you've covered it all. There is always a way to dive in into CSS minification, JavaScript minification, but that goes Web development by itself. It doesn't cover mobile. And it assumes that you may have your page at the minimum contents and everything directed to CDN whenever possible so you're not using too much, consuming some data back and forth.

I think you've covered it all. And you asked me if I've had to change or adapt any web sites on my side, I guess you'd cut it out here. So we may have a broken part, yup, but now, it's back.

What I was telling about is I've had the opportunity to build some prototypes using responsive design, as well as deploying web sites using that approach by default. I have not had the need to change an existing project because most of the projects I was involved on, it was a long time ago or you wouldn't apply or nobody asked me to rewrite it in a mobile-friendly manner.

But that's the standard now, and everybody should care for it. Your article points to a great article when getting started with a mobile-first strategy.

Manuel Lemos: Actually, this is not mobile-first because the site existed before it was mobile. Anyway...

Ernani Joppert: Yeah, but whoever has a web site which is not yet mobile-friendly or wants to begin a project or a website which should be mobile-friendly anyway, they should care for the points that you pointed out, and that is a valid information.

Manuel Lemos: Right.

Ernani Joppert: It would be more valid for someone who has already an existing web site which doesn't contain mobile-friendly content and needs to go to the hassle of having to rewrite some portions of the website. But it is a complex post, and it gives you a lot of feedback on what to do and what to account for and what to pay attention for.

Manuel Lemos: Right. Well, I hope it is useful. I'm sure that many developers that are facing similar problem probably find some useful information here. On my part, it has been a painful effort because it's a lot of work to do.

There are many types of pages to adapt to mobile, and the work, it is not all done. It was done mainly on public pages that are visited by users once they arrive to the site, either from the search or not.

That was the priority, but to have the whole work fully done, it has to extend to all other pages of the site, and that still will give me some work. I'm now a bit tired of this, I have to confess, because this is not exactly what I consider to be fun in terms of development, but it was a work that had to be done. Hopefully, a few more weeks, it will be done, and I will finally move on to other more interesting developments.

PHP and JavaScript Innovation Award Winners of 2014 (38:07)

Manuel Lemos: Anyway, now, we are reaching the end of the podcast when it's time to start talking about the Innovation Award aspects of the past month, but this time we are going to start talking first of the Innovation Award winners of the year.

Let me share the screen here just to talk about the winners. In 2014, we had many, many contestants. We received over 100 innovative packages, but the winner was Chi Hoang from France. Actually, he's not originally from France. France is where he lives now. He sent nine packages. He had sent many, many innovative packages and for that he has won.

Ernani Joppert: It is impressive to have one person submit nine packages within the year, and those packages weren't just simple things, contains a lot of nice work here. I guess his efforts were awesome. One point is he's living in France now, so he benefited France on the overall ranking. But, yup, I would say nice achievement. Kudos to Chi Hoang.

Manuel Lemos: And for that, he's going to win this nice trophy. Let me see if you are seeing it like I do. This is a trophy for the Innovation Award winners. As you may see, there is the name here, the year, and he is the winner of the PHP Innovation award.

Other than that, he is going to also to get one of those elePHPants, which is a symbolic prize that winners get from the site for being Innovation Award winners.

I tried to invite him to the podcast, but it seems he had a problem with his notebook, so he could not participate because he didn't have another computer with a Webcam. It's a shame, but I would still try to interview him in a separate program or maybe by email, so there will be a separate post to talk about this.

Other than that...

Ernani Joppert: It would be awesome to have him here, right? It would be awesome.

Manuel Lemos: Right. Well, not now, but maybe later if he can manage to fix his computer. Let's see how it goes.

Other than that, there was also for this year, for the first time, there was the Innovation Award championship by country, which is to give an award to the winners of the country that accumulate more points throughout the year.

So, in this case, the country that accumulated more points was Italy, with 10 packages and 75 points. Congratulations to everybody from Italy. There are seven winners. I have at least here Orazio Principe, Ettore Moretti, Michele Locati, Luca Pacchiarotta, Enrico Anello, Michele Andreoli and then somebody who calls himself jstar88. I don't know what his real name actually.

All these winners were already contacted because they also won one of these trophies. They are very similar. Let me show them here. OK, you see them. They're the winner. This is the special trophy for the Innovation Award winners by country. So they will get one of these by mail. Here's the symbol of PHP Classes here, and then the symbol of the award, and I hope that they will get these awards by mail soon.

I'm still waiting for some of them to send me their postal addresses, so they also will win one of those elePHPants. Each of them will win one elePHPant. This trophy has just arrived today. Soon, they will get them by postal mail.

So now, for JavaScript Innovation Award, we also have the same award. I could not fit all the trophies here, but they also have a trophy. In this Thomas Björk from Sweden, he won the Innovation Award so he's going to get one of these.

Then, there were four winners that won the Innovation Award by countries. In this case, it was France that won. So they will get a trophy like this.

Ernani Joppert: And, of course, they were benefited by Chi Hoang which was the major contributor.

Manuel Lemos: Yes, Chi Hoang also participated in the JSClasses, so kudos again for him. In this case, he helped France to win. I think probably France would win by itself. There are not many contributors in JSClasses as there are in PHPClasses.

Anyway, this is just to mention I will post separate articles just to talk about these awards, and if I can record a separate interview with the winners, I'll try to do it. Or else they'll have an interview by email.

JavaScript Innovation Award Winners of November 2014 (44:40)

Manuel Lemos: Now, let's talk about the actual Innovation Award nominees that we've talking the past month. In this case, we are going to talk about first, the JavaScript Innovation Award. Let's talk about the winners of November.

Let me increase the font here. OK, so Ernani, which ones would you like to comment this month of November?

Ernani Joppert: Right. I have handpicked some rarity on the PHPClasses. So let me share my screen, and I'll let you guys know.

Manuel Lemos: No, first, the JSClasses.

Ernani Joppert: OK, so the JSClasses would be two components. Apparently, this one haven't increased the font, so I'm zooming in. It's from Jimmy Bo from Canada. The name of the class is JavaScript CSS Generator. It is used to generate CSS styles dynamically as the description tells.

And to me, this is a nice component because if I'm implementing a solution where given that user is logged in, he can customize the looks of the Web interface that he is actually logged into. He can save that preferences by manipulating colors, font sizes, et cetera, et cetera that suits him better. And that gives customization, so it's a nice component.

It saves time to implement such thing and actually to test it. It's a way to go for Jimmy Bo.

The other component...

Manuel Lemos: The prize?

Ernani Joppert: Yeah, I just forgot. By the way, Jimmy has won, as far as I can tell, a prize. Every Innovation Award winner can pick a specific prize, and he chose one book by choice of Packt Publishing. So I guess he will even increase his knowledge on a technical subject. Unfortunately, I can tell which book he picked on, but hopefully CSS-related, so we can have even better, even more nice components by CSS from him.

Moving to the next one, this one is a WebCodeCam. It's called WebcodeCam. It's a barcode and QR code scanner, jQuery plugin. Basically, this is a canvas based plugin, so it can take Canvas elements and make it to show the image of the webcam. Then, it can detect and scan values of a barcode or a QR code, so it can be used to scan invoices, barcodes, product codes.

That is a nice component to see going on. I'm not sure if it works and performs really great because this is early adoption, I would say, but it's a nice component to see going on. I'm sure that it can be improved later. I mean, it can be used within the demand that you... If your website is running HTML file, it can be used to scan barcodes if you have that necessity within your project.

So way to go to Andras Toth. I'm not sure if I pronounced his name correctly, but he's from Hungary. And, by the way, I've never seen somebody from Hungary before here, so it's nice to see Hungary here. So it's nice to see that at least two winners from Hungary, as I can see here on the page. It's nice to see everybody from all around the world contributing as well to JSClasses.

By the way, Andras, he picked one downloadable e-book of choice of O'Reilly. Unfortunately, I don't know which book he handpicked, but hopefully it is HTML5-related and Canvas-based, so he can even contribute to more components within the JSClasses web site.

Manuel Lemos: Well, on my behalf, I would like also to comment a couple of components.

Let me start, first, the year with this JavaScript Initial Avatar Creator, which is a package from Arturs Sosins from Latvia. Unfortunately, Arturs who is usually been hosting this podcast too, but he had a strong cold and he could not make it. Let's see if he can make it for the JavaScript Hangout soon. I wish him well.

But, anyway, he submitted an interesting package that creates avatars from the initials of the names of somebody. He takes the name of somebody and creates pictures with those initials. It's simple but effective. For instance, you have a site that you own, which you wanted to show an image that represents the user and user has not provided an image, you can use an avatar that is made of his initials. So kudos for his contribution. In this case, he did not pick a prize.

So next nominee, it's Mehdi Safavy from Iran. He contributed a package named FlyMe, and this one is to scroll smoothly. For instance, when you have a link that is an anchor to another section of the page, you can click on that link. Instead of jumping directly to there, it will scroll smoothly as if it was a fly flying to that position. So I think it is quite neat.

Ernani Joppert: I think I've seen some websites using parallax scrolling, which I'm not sure if that is actually the effect.

Manuel Lemos: No, that's...

Ernani Joppert: Yeah, because parallax mimics... It mixes 3D. It has sort of a depth perception thing, but, actually, the parallax scrolling may use a smooth scroll component which this can be of help, right?

Manuel Lemos: Right.

Ernani Joppert: So maybe combined with the parallax class, this can be evolved into another component.

Manuel Lemos: Yeah, in the case, it is just to scroll pages to the right position, so it is a simple thing, not like parallax that you need to have multiple depths of backgrounds and foreground playing. I think there was a class already for parallax scrolling on this one. It's just for simple things.

Kudos to Mehdi Safavy for his contribution.

PHP Innovation Award Winners of November 2014 (52:45)

Now, we are going to move on to the Innovation Award winners of November, but this time, for the PHP Classes site. Arturs, I mean, Ernani. I've been so used to ask Arturs to comment on packages like this month that I even confuse it.

Ernani, which ones would you like to comment?

Ernani Joppert: Yeah, I've handpicked some of them in order of preference and I will start commenting. The name of the component is PHP Avatar Generator. It is a creator of avatar images from parts of users' faces. So basically, you can pick a model of your mustache or your eyes or your mouth. I'm not sure if it has a head shape, but it's actually a good solution when you don't want to have pictures of users within your website, so you can give another type to that user.

The creator of this component is Pooya Sabramooz. Hopefully, I've mentioned his name correctly. He's from Iran. Congratulations to him, and by winning this contest... I'm not sure if he was the winner.

Manuel Lemos: Yes.

Ernani Joppert: But, yeah, he was the November 2014 winner. So he got one downloadable e-book of choice by O'Reilly. It seems O'Reilly is a favorite among both JSClasses site and PHPClasses, huh? It's nice to see that O'Reilly is a favorite here.

Manuel Lemos: Yeah, many users like O'Reilly books.

Ernani Joppert: Yup. It's nice to see that.

So, moving forward, I've liked to comment this specific class, because it does a lot of hassle-free things, it does dump table in chunks. So whenever you have the need to compact a database table into specific chunks of bytes, you can use this component to do a table dump of MySQL.

I've been using MySQL in many, many years, and I'm sure that eventually I will need such components. So congratulations to the author. His name is Ovidiu Lesei. Hopefully, I mentioned his name correctly. He's from Romania. I like to see people from Romania here. I don't see much of them here, but I'm sure that Romania is a strong country in PHP Classes.

So the prize was one downloadable copy of PHP Editor Professional. So he may be using a Windows version, probably. It's nice to see Windows developers as well on the PHP Classes.

Manuel Lemos: On my behalf, I would also to comment a few components. Let me share the screen here.

First, I'll start by this one that is called PHP Database Sync. Basically, this is a package that can synchronize tables of different databases, but this one specifically uses PDO.

There are many packages to synchronize databases, but this one is sort of database agnostic so it can work with different database, not just databases like those that are more frequently used like MySQL, which in the case is...

There was also a request in the package request section that ask for database class that would work with other databases, not just between MySQL database. It could be mixed database type.

This one was developed by Jacob Fogg from the United States, and for this he picked a prize which is a copy of the Komodo IDE.

Next that I would like to comment is another package that was also requested. This one is PHP MySQL User Management by Maik Greubel from Germany. There was an user also requested a package that would be for managing MySQL user accounts.

It's not managing records of any users. It's actually the users that have access to MySQL databases. So this package can do many operations, like listing, editing, modifying, removing MySQL users from the actual user accounts in the MySQL database server.

So congratulations for Maik Greubel, and for this he picked... Actually, he did not pick a prize, sorry.

Moving on to the next package, PHP Time Parse to Timestamp is a package developed by wapmorgan from Russia. What this class does is to take dates in natural language and convert them to timestamps.

There were actually classes. I think you can do that with PHP but only for English, so this package goes further because it supports different languages like Russian, English, French, German, Chinese and Spanish.

So congratulations to wapmorgan for his contribution. This is very interesting. For that, he picked a prize, which is one license of the IP to country database, that is provided by IP2Location.

Ernani Joppert: Which is a huge, huge thing when you're building analytic-based applications. It really helps to track down visitors coming to your website.

Manuel Lemos: Yes, it is interesting that several authors that also picked that prize. So it is usual for them in their products.

So the next package that I wanted to comment is PHP Content Security Policy Generator, which is a package... in this case, developed by Tom Postma from The Netherlands... that can generate headers, I mean HTTP headers that define security policies that your browser will comply.

This is a very in-depth security topic. But if you are onto security, and you should, every developer should be onto security, you should take a look at components like this that help to prevent certain types of security attacks.

And for this, Tom picked a prize, which in this case was a book of choice by Packt.

Another package that I wanted to comment in this page is PHP Split Number. So it takes a long number with many digits, and it splits in an array of smaller parts according to certain rules that it defines. This is a sort of unusual package that you get here. For that, it was considered innovative.

Kudos to Anthony Rogers from the United Kingdom that submitted this package. For that, he picked a subscription of the PHP Architect magazine.

Finally, my last package that I want to comment is one that's also unusual. It's PHP MTOM SOAP Server, which is basically a specification that is part of the SOAP specification for transferring binary data over the SOAP requests.

SOAP requests, as you may know, they are made of XML. In this case, it is able to extract binary data that uses this MTOM recommendation. So it decodes that message from the binary data, from the SOAP request, so it can be used, for instance, as a file.

So congratulations to Cleidson Dias from Brazil for this submission, and for that, he picked one copy of CodeLobster Professional IDE.

On my part, I commented all. I think Ernani, you were about also to comment a couple of packages, right?

Ernani Joppert: Yes. I have two more packages to comment on. I was just looking at PhpED, the editor, and they have both Linux and Mac OS X capabilities by using Wine.

Manuel Lemos: Oh, I see. Its emulated.

Ernani Joppert: Yeah, it's not the best way to emulate your IDE, but if you're like me missing out the Windows field sometimes, you can use that. I'll give it a try, and maybe on the next podcast which I'm here, I'll comment back on.

Now, moving forward to the two packages that I really likes. It's the package that it's called Tradukoj PHP PO File Generator. So it converts locale CSV file to PO files and send it to Tradukoj. I'm not sure about Tradukoj.com, but I think it's a translation repository as the user explains here, but it can be used by any applications using gettext libraries in PHP to benefit from translation files. So if you're building a multi-locale based application, that is a nice component to look around.

The author is Patrick Joseluis Laso from Spain. I guess Spain was a huge competitor in the PHP Classes country ranking. It's nice to see...

Manuel Lemos: There were several countries that did very well, not just Italy that won, but several others.

Ernani Joppert: If you began the prizes for countries, the ranking for countries, Spain has caught up a lot.

Manuel Lemos: Yes, Spain went to the fifth place. They did not win because the other countries did that, like United States, France, Iran and Italy that won. But they did well. Fifth is still a great place, and I hope this year already they continue to submit great packages, so they can compete for the Innovation Award winner by country.

Ernani Joppert: They might. May I say now then the next one, which is the last one. Oh, by the way... Yeah, I forgot the prize. Let me just recall on that prize thing. I just closed my tab, so I'll have to reopen it. As far as I recall he got... Oh, wait.

Manuel Lemos: PhpStorm.

Ernani Joppert: Yeah, the PhpStorm which is one IDE which I love about, and they have my support as well. So, yeah, kudos to him. He is now the proud owner of PhpStorm, which is really, really nice IDE. I guess it's based on IntelliJ IDEA or something like that.

Manuel Lemos: Yeah, it's from the family of similar tools.

Ernani Joppert: To JetBrains, right?

Manuel Lemos: Right.

Ernani Joppert: Which is now Android Studio, which is something I have been involved with a lot these days. It's now the official IDE for Android, so it's also based on JetBrains IDE. So it's nice to see if you're programming to Android and PHP altogether, you can benefit from PHPStorm. It's a nice user experience.

Now, the last one, which is PHP DOC DOCX PDF to Text Converter. So if you have a Word File, both old versions of the DOC formats or the DOCX, which is the newest formats of a Word file or a PDF file, this library can help you extract the text from those files.

So imagine you're scanning for files, and you're looking for specific Word matches, and you have a set of files to look for. Imagine you're searching for a resume database and you're looking for the particular name of a person, you can benefit from this component, which can be a huge value-add on your web page.

The author of this component is Aditya Sarkar. So I'll say it again, Aditya Sarkar, from India. India is a long-time country here in PHP Classes. I haven't seen much from India lately, but it's nice to see that one person won. Am I being not fair, or am I being fair?

Manuel Lemos: No, India always have many nominees. Actually, they did rank well. They ranked in eighth with five packages but other countries did better, so it's not that they did not do well. Just that once you're in a competition, everybody tries to do better. Let's see if India also can do better in 2015.

Ernani Joppert: The prize that he picked up of his choice was an VS.PHP which is a component for Visual Studio, so he's a Windows user and he likes Visual Studio apparently. I just hope that he has memory on his machine because I've heard that Visual Studio is a lot of RAM. I don't know, that's what I've heard. I cannot say if it's true or not, but I like to see that somebody is using Visual Studio to code for PHP, which proves that PHP is everywhere, right?

Manuel Lemos: Right.

Ernani Joppert: Windows users, whatever is their OS, they are using PHP to at least develop or deploy. And it's nice to see that the Microsoft ecosystem is accepting PHP adopters in a friendly fashion. So congratulations to that.

Manuel Lemos: The VS.PHP is an extension of Visual Studio, and they can run more integrated with Visual Studio and Google. That's PHP debugging.

Ernani Joppert: Especially if you're using .NET for some specific situations. It's nice to see that you are, in fact, benefiting from the whole Windows ecosystem without having to use a different IDE or whatever. So it's nice to see that going on.

Conclusion (1:10:24)

Manuel Lemos: Yeah. So with this, we practically reached the end of this podcast. We commented on a lot of interesting topics. We focused also a lot on the PHP Innovation Award prize of the year of 2014. The 2015 edition is already going on. We already have nominees in January, and we will continue to have in February and other months.

I hope that more and more authors can join, so they can win nice prizes like this, nice trophies like this, which is a nice symbol for their hard work. In this case, this one was won by Chi Hoang that sent nine packages. Practically, all months he sent...

Ernani Joppert: That's a rare prize.

Manuel Lemos: ... an innovative package.

Ernani Joppert: Yeah, but that's a rare prize.

Manuel Lemos: Exactly. It's specific to the Innovation Award of PHP classes. So if you won't be submitting packages to PHP Classes, you can win, be nominated for the Innovative and win, not only the trophy but also that elePHPant.

So with this, we practically ended...

Ernani Joppert: Will you have a special trophy by year, the year winner? Or it's just for now, the trophy is the Innovative trophy? Or do you have a specific for the year?

Manuel Lemos: No, this one is for... Chi Hoang is for the winner of 2014.

Ernani Joppert: Oh, great. So you cannot win that one anymore. The only one you can seek for is the 2015 one, right?

Manuel Lemos: Right. That's all about the past, so last year is 2014. Now, 2015 has already started and everybody can submit innovative packages, not only to PHP Classes but also to JS Classes, so you can win one of these.

Ernani Joppert: Awesome. Great. Really, unique prize. I hope I got the time.

Manuel Lemos: It's a symbolic prize. It's a symbolic prize and all, we appreciate. I only got these trophies today, so most nominees did not see the actual trophy before that. I hope they appreciate it because they are quite nice. But one thing I am sure that they'll appreciate, because many of them told me they were excited to get is elePHPant because it's quite unique.

This is not a regular elePHPant. This is a specific elephant made for the PHPClasses site, and you can only get it from the PHP Classes site.

So with this, we practically ended this podcast. I like to thank you Ernani for coming. We took you out from your wedding preparations. It's always great to have you here, to get your insights, and I hope you can come in future editions as well.

Ernani Joppert: Thank you.

Manuel Lemos: So on my behalf...

Ernani Joppert: Yup, please go ahead.

Manuel Lemos: So on my behalf, that is all for now. So it's up to you to say what you have to say, the final things.

Ernani Joppert: Thanks a lot everyone for being here with us. First of all, we wouldn't make it without the PHP Classes users and watchers. So I hope you guys liked. You can always comment on which feature we should improve or either of us improve on. We accept criticisms if they are constructive, and I hope to be here again, soon.

And I thankfully say to Manuel, thank you for having me here and it's always a pleasure.

Manuel Lemos: OK, bye.

Ernani Joppert: Bye.

[Music]


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

Login Immediately with your account on:

FacebookGmail
HotmailStackOverflow
GitHubYahoo


Comments:

No comments were submitted yet.



  Blog PHP Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Help Testing PHP 7 to...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)