PHP Classes

The Debate of Making PHP Faster using a JIT Compiler - Lately in PHP podcast episode 19

Recommend this page to a friend!
  Blog PHP Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog The Debate of Making ...   Post a comment Post a comment   See comments See comments (3)   Trackbacks (0)  


Viewers: 9

Last month viewers: 3

Categories: New site features, Interviews, PHP Performance, Lately in PHP Podcast

The official PHP implementation is evolving too slowly, while alternative implementations like Phalanger and Facebook HipHop can run PHP faster thanks to the use of JIT compiler engines.

JIT compilation was the main topic of the episode 19 of the Lately in PHP podcast presented by Manuel Lemos and Ernani Joppert who received as guests Miloslav Beno of the Phalanger team and Nuno Lopes of the PECL LLVM project to discuss this and other interesting topics of the PHP scene.

They also made a brief retrospective of what happened in the PHP world in 2011 and what they expect for 2012.

Listen to the podcast or read the transcript here.

Loaded Article



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

Read the podcast transcript

Click on the Play button to listen now.

Download Size: 23MB Listeners: 3330

Introduction music: Harbour by Danilo Ercole, Curitiba, Brazil

View Podcast in iTunes

RSS 2.0 feed compliant with iTunes:

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

Show notes

Introduction (0:20)

Introduction of the guests Miloslav Beno and Nuno Lopes (0:55)

The Debate of PHP JIT compilers (3:14)

Retrospective of the PHP World in 2011 and Expectations for 2012 (30:50)

Sponsored Articles in the PHPClasses Blog (37:37)

Contributor Report E-mail Messages (39:23)

Latest JavaScript Objects Published in the JSClasses site (43:44)

PHP Programming Innovation Award nominees of October 2011 (46:39)

Conclusion (52:49)

Introduction (0:20)

Manuel Lemos: Hello, welcome to the Lately In PHP podcast, this is Manuel Lemos the regular host of this podcast that is intended to be a sort of recapture of what happened lately in the PHP world.

This is episode 19 and as always I have here with me Ernani Joppert my regular co-host. Ernani, how are you doing?

Ernani Joppert: Hello, Manuel, glad to be back. It seems we have lots of things to talk about and I'm all for it.

Introduction of the guests Miloslav Beno and Nuno Lopes (0:55)

Manuel Lemos: Well, we also have two guests on this podcast to discuss a very interesting topic about one thing that has been discussed in the PHP world recently.

But first let me introduce you first, Miloslav Beno, hello, Miloslav, how are you doing? Well, I'm not sure if I'm pronouncing your name correctly.

Miloslav Beno: Oh, you are very close, Miloslav Beno, like Beño, like in Spanish.

Manuel Lemos: Oh, really. Okay. We also have here with us Nuno Lopes, hello, Nuno, how are you doing?

Nuno Lopes: Hello.

Manuel Lemos: Well, we are going to talk about a very interesting topic related with Jit compilers, but I think it's better for each of you, both the guests, to talk a bit about yourself, what you do, where you live, and anything else that is relevant to the PHP world. So, Miloslav, go ahead, talk a bit about yourself.

Miloslav Beno: Okay. So, I was born in Slovakia, but most of my life I lived in Prague, the Czech Republic and I was studying in Charles University, the place where Phalanger was started, and now I'm part of the Phalanger team, developing it, and we established a company for commercial support for customers that are using Phalanger, the commercial application. And now like most of the time I spend in Valencia where I live.

Manuel Lemos: Oh, really?  In Valencia in Spain?

Miloslav Beno:  Yeah.

Manuel Lemos: Oh, okay, interesting.

Miloslav Beno:  Okay, and one of my hobbies are the languages and also the real ones and computer ones.

Manuel Lemos: That's curious. So what about you Nuno?

Nuno Lopes: Okay, so currently I'm a PhD student at the Technical University of Lisbon, and I've been working on the PHP project for almost 10 years now, first in the documentation, then core extensions and Zend virtual machine, and nowadays I just maintain some quality assurance and that's it.

The Debate of PHP JIT compilers (3:14)

Manuel Lemos: Yeah, that's very interesting too because it's all related with one of the main topics of this podcast which is all it was mentioned in an article that was published recently in the PHP Classes site blog regarding the development, I think in the latest version of the Phalanger Project that according to the performance benchmarks that seem to show that when you run PHP on that setup of using .NET and having Phalanger as compiler of PHP code into .NET assemblies it ends up running faster than at least when compared with usual PHP setup on Windows running it as a FastCGI module.

Miloslav, can you comment a bit more on that because some people found it hard to believe or somehow were surprised by this.

Miloslav Beno: Okay, sure. So basically what Phalanger is you mentioned it's open source PHP implementation on top of .NET framework, and also Mono which I'm very happy about it, and basically it enhances the compiler runtime, class libraries, manage extensions which are complete implementations, but also we are able to run native extensions from PHP so you are not just restricted to use managed extensions.

But what our benchmark shows it's better to use managed extensions not only it's managed code so you don't have to worry about your server, but also the performance seems to be better, and that's because of, as you said, we're using JIT compiler from Microsoft and from Mono which is highly optimized and we benefited from that.

Whenever we can we compile it statically if possible, and if it's not, if it's not possible to say what types are you, because it's dynamic language, we use DLR which is the Dynamic Language Runtime from Microsoft which is also open source now.

Manuel Lemos: Oh, that's interesting. But let me just go back a bit to something that you said, you mentioned that you can run PHP extensions when those programs, those PHP applications are compiled with Phalanger, or I did not get that right?

Miloslav Beno: Yeah, yeah. Like the only restriction we have is because this part of the Phalanger is a little bit older, so you can you use native extensions but most of them has to be PHP 4 which are old, but some of them can be PHP 5, but you can compile code and use these extensions.

Manuel Lemos: Oh, that's an interesting aspect that I did not get before because some people were sort of complaining that they wanted to run extensions written in C because they assumed it would be faster, but it was not evident looking at your site that it would be possible to run as well.

And also regarding the integration with .NET or Mono, in case you are using a Unix-like platform, can you give a more detailed overview of what happens starting from the PHP code compilation because some people assume that is a separate step and you need to somehow integrate the PHP code into that environment of the .NET runtime engine and web server.

Can you tell a bit more on that including also is there also any need to use the IIS web server to run that environment on Windows or is it more flexible?

Miloslav Beno: Okay.  Yeah, yeah, it's more flexible, you can use IIS, you can use Apache server, but basically what we do is we take the PHP language, we formalize it so we can... because there wasn't really a standard so we formalized it and we made a compiler.

So you take your PHP code and you take our compiler and just use it as PHP. The biggest difference for PHP developers is that we don't have php.ini file for configuration, but there is that config file which is standard configuration file on .NET and Mono.

But what happens is you take PHP and our compiler compiles it to .NET byte code or Mono byte code, and then it runs on top of JIT compiler which takes this byte code and compiles it to your specific hardware so it can run really fast.

Ernani Joppert: I was about to ask when you mention Mono is this widely spread against the Unix flavors or is there any limitations?

Miloslav Beno: I'm sorry I didn't get you.

Ernani Joppert: When you mentioned about Mono I wanted to know if this is widely spread against all the Unix flavors or if it's limited to a specific subset of Unix or if it hasn't been tested on FreeBSD or other systems.

Miloslav Beno: Oh, it's not specific for Linux, it can run, it just needs Mono to run.  You are not really limited, we are about to release Mono installer because so far there was only Windows compiler, but we are waiting for Mono, to help release the installer and we will publish our Linux installer in the beginning for Debian maybe they will take it and make installers for another system too.

Ernani Joppert: Oh, very nice.

Manuel Lemos: What I was also going to ask was about for people, for instance, they want to try, evaluate, use of your project in real world applications, do they need to modify any of their PHP code or everything works out of the box?

Miloslav Beno: It depends, there are things that are different, but our goal is to make it as much PHP as possible on the platform.

So basically most of the applications just work out of the box. You can take WordPress or many anything and it will work, but if you want to use like your in-house development you should look into compatibility page in our Wiki, and there are a few features that are not implemented yet, but we are planning to implement them, so it's just a question of time, just more subsets, mostly it will work out of the box.

Ernani Joppert: Oh, I see. Were you asking him something Nuno?

Nuno Lopes: Yes, I'd like to ask something. So which part of the code of the PHP do you reuse, do you reuse like the byte code handlers of the Zend VM? Or do you reuse any code at all?

Miloslav Beno: Yeah, like we reuse for example the native extension, as I said, but most of the core is managed and our class libraries are managed so that it was a complete implementation, because we want it to be managed code.

So because there are a lot of advantages coming from that because then you can run also on Windows, you can run 64 bit, it depends what you want, but also you have secure system you don't have to be worried about some extension will crash your system, or if you even want to use PHP extensions and you are worried that it can crash, you can isolate it to another process so you don't have to be worried at all.

And another advantage for me, one of the biggest goals for Phalanger was the internal compatibility with .NET languages, we didn't mention it before, to me it's really important that we can take any .NET code and use it as PHP code or the other way around, you can even use Visual Basic code if you want and you can really benefit from it.

I was just writing an article about WordPress plugins which is completely in C#, and it uses fast C# libraries, but I will publish it on the blog.

Manuel Lemos: Yeah, well, actually it seems your team is made of... I mean the Phalanger Project had different teams over time, and the current team is not exactly the one that started it. Can you just give an overview of what happened?

Miloslav Beno: Okay. When Phalanger was designed I was in high school so I didn't know the origin, but then I came to the university and it happened that I met them and they introduced us to the Phalanger and everything, and how to compile stuff about a new .NET platform, in the time there was only Java and .NET was something new, so we were experimenting with that.

The guys, the original team, were hired with Microsoft so they got into Redmond and so we took it over and we started from that, and the original guys, for example, one guy was writing Iron Ruby which was also using the DLR language, the DLR runtime that I mentioned before.

Manuel Lemos: I was going to mention their names but I'm afraid I probably would not do a good job, can you do that?

Miloslav Beno: Yeah, the important original authors are Tomas Matousek, which was the one writing Iron Ruby, now he's in C# you might guess, and also Ladislav Prosek, which is in Microsoft, and the other team members are Tomas Petricek which is also a huge F# fan, and Jakub Micek and me.

Manuel Lemos: That's fine. So the original two founders of the project, they remain at Microsoft?

Miloslav Beno: Yeah.

Manuel Lemos: So they are not involved in Phalanger anymore.

Miloslav Beno: Not directly but they are helping because they can.

Manuel Lemos: Oh, I see. So currently you have your own business, DevSense, right? And so your goal as a business is to provide support to whoever wants to use this platform?

Miloslav Beno: Yes, that's right, and also offer many extensions or another feature that commercial companies need or something. And also to provide integration for Visual Studio 2010 which you can get for free because you can download Visual Studio 2010 for free in integrated shell which doesn't have that many features like another one, but you can take this one and put our PHP tools there and you have a complete development platform for free.

Manuel Lemos: So you can run tests and debug your code like any other language that can be used with Visual Studio?

Miloslav Beno: Yeah, that's right. And the new thing which will come soon is IntelliSense was in there.

Ernani Joppert: And one question I have for you, Miloslav, first is we can also use the Visual Studio Express as well, right, isn't that one free?

Miloslav Beno: I'm sorry, which one?

Ernani Joppert: The Visual Studio Express Edition.

Miloslav Beno: Oh, yeah, sure.

Ernani Joppert: Which is a very fancy IDE, right?

Miloslav Beno: Yeah, that's true. So you can take it and use it with Phalanger.

Ernani Joppert: Right. And one question that I have, it's most likely a very common one and I would like to address it here, is in order for me to make it work if I have an entire context root, let's put it this way, I have a PHPBB setup in my website, how does this integration map the context roots and redirects the access to the native code?

Would it require to have a single PHP file there in order to redirect requests that would invoke the DLLs or the shared objects?

Miloslav Beno: It depends. You can take your PHPBB as it is and just install Phalanger and it will work, but if you want to compile it so you don't want to have any PHP parts there, you just want to have DLL, that's kind of more complicated if it needs to touch the file system, and we also have planned for this feature that you just don't want to use anything on the file system.

Ernani Joppert: Oh, very nice. And another quick question is regarding the Phalanger itself, do you have any plans to deploy this on a cloud environment? I know it's a big word right now, so most likely it's a very nice use case for your project.

Miloslav Beno: Yeah, that's true. I think on Microsoft Azure that's a really nice alternative to their PHP, because they have PHP there, but it's managed platform so I think that if you want to use it you would benefit from using Phalanger.

Manuel Lemos: Well, this is interesting, and just to give everybody a better idea why are we talking about Phalanger, basically there was a developer that went on the PHP internals list named Rasmus Schulz, he is a different Rasmus than the original creator of PHP, not to confuse both people for those who are not paying attention, and basically he proposed to use Phalanger, I don't know, do you know Rasmus Schulz or he's a fan of your platform that you did not know?

Miloslav Beno: Yeah, I never heard about him but I remember his name.

Manuel Lemos: Okay, now you should thank him for giving you exposure. But, anyway, this whole topic of Phalanger brings us... I think it's a wider discussion about having JIT compilers on PHP.

Recently we also had Facebook announcing a newer version of their PHP compiler engine that now features a JIT compiler that can, from what I understand, does dynamic compilation.

But this brings us also to the work of Nuno that started several years ago, also to bring this JIT compilation capabilities through an extension of PHP named PECL LLVM. Nuno, can you talk a bit more about your work, what you've done and where you are today on that?

Nuno Lopes: Yeah, sure. So that started as a Google Summer of Code Project, so we had a student working on the project, and the idea was to use the LLVM compilation framework as the JIT platform.

And the idea was to reuse as much code from the Zend virtual machine as possible, so the effort of creating the JIT was minimal. And so basically we're converting the byte code of Zend to direct calls in LLVM, and then the LLVM compiler itself would optimize and inline all the *** (20:37) and so on, and take care of all the work for us, and so our work was just minimal translator from Zend byte code to LVM byte code.

Okay, so this has some advantages. The biggest advantage is that the work to implement this JIT compiler is minimal, so it took just a few days to have this JIT compiler running, and the other thing is that we get full compatibility with the existing PHP compiler, so as we are not implementing anything, we are just reusing existing opcode handlers, and so on, so we get compatibility for free.

Manuel Lemos: Right. You mentioned first ‘we', so I suppose there are several people involved besides you, can you mention them?

Nuno Lopes: Yeah, so we had a student working on this for the Google Summer of Code, and his name was Joonas Govenius , if I get it right.

Manuel Lemos: So just so people understand, Google Summer of Code is that project, if you can call it that, that Google sponsors some work done on open source projects, and the student gets some money for the work, and there is also a manager that also gets some money, I'm not sure about that part.

Nuno Lopes: No, no, it's just the student.

Manuel Lemos: That manager would be you in this case, right?

Nuno Lopes: Yeah, I was the mentor, yeah.

Manuel Lemos: So you were talking about that work, where did it go?

Nuno Lopes: Yeah, so basically we got a JIT compiler working, so we produced an extension so you could load in your Apache, PHP, or common line version, whatever, so it could run. It would compile one function at a time, so when you call a function in PHP, so it would JIT compile it, and we did some benchmarks but, okay, the results were not so good because we were not caching the executed code, so it required a few more weeks of work basically.

Manuel Lemos: So that's the work that was done then, and after that was there any progress or it remained sleeping somehow, that project?

Nuno Lopes: Basically, no, so there was little to no interest, okay, so I was contacted by two companies only, but then eventually the interest just fell down and so the project just died.

Manuel Lemos: Yeah, that's curious because a project like this I think it could bring lots of benefits to the PHP world, and being well-integrated in the official PHP runtime engine, which is based on Zend engine, it would be I think more natural to deploy and be accepted, because it's not just a matter of doing something advanced and the end it is not accepted in the core.

So you said that there was no great interest then, then when was that, like 2008?

Nuno Lopes: Yeah, I think it was 2008. So people at the time were still believing that the database is the bottleneck and so we shouldn't care too much about the execution time of the PHP script itself.

Manuel Lemos: Yeah. Well, at least in a great part of the cases that is probably real, but I'm sure the execution time as it's waiting can also benefit as also demonstrated not just by the Phalanger Project, but also by Facebook, Hip Hop compiler.

And now that we are talking a bit more on this, do you think the interest on JIT compilers can come back to the PHP core developers, or do you think it will be hard?

Nuno Lopes: Um, I think for most users of PHP they don't care what they are executing, right, so they are just running on their shared web hosting company, and so they don't really care if they are taking 50% of the CPU or 80%.

Manuel Lemos: It's already slow, huh?

Nuno Lopes: Right. Yeah, it's something for the web hosting company to care about, but probably they don't, they don't really know what they are running anyway, so in that sense there is no interest in that group.

And the big players, well, they can invest in deploying specific implementations like Facebook , and I believe we'll see more of such kinds of deployments in these big web sites. As far as developers go, currently the development rate has been really low in the PHP community, so the number of commits is really low, and so to get a new JIT compiler then you need like a bunch of new developers to jump in and do the work.

Implementing a JIT compiler also requires some specific knowledge, and I'm not sure that we would have the manpower with that knowledge in the PHP community right now.

Manuel Lemos: Well, I think it boils down to personal interest because most contributions even core developers are volunteers, and if they do not see great motivation to do that themselves they probably don't do anything at all in that sense.

But do you think Zend, for instance, would have greater interest to sort of bring PHP on par with other languages that are integrating JIT compilers nowadays than in the past?

Nuno Lopes: Absolutely. So I believe that Zend is the main like stakeholder here, so they could really fund the development of a JIT compiler, and then they could continue selling their tools to optimize a JIT compiler and whatever and cache, I don't know, but they could continue with their business model of selling some tools to improve the current like little machine.

But I believe it has to be some company like Zend to step ahead and do the initial implementation.

Manuel Lemos: Yeah. Well, we have to wait and see if and who is going to have that interest to bring JIT compiler to PHP itself. Well, on your side, Nuno, do you think you have time to somehow dedicate to an eventual integration or probably a continuation of your PECL LLVM project, or is it hard for you nowadays?

Nuno Lopes: Yes, nowadays I'm not a high school student anymore so the time is more scarce. I mean I could not do it alone, but for sure, so it requires a team to make it full time professionally, I think that's the point.

Manuel Lemos: Well, maybe Zend will get you a job, and that's another story.

Nuno Lopes: I don't know. I don't think so.

Ernani Joppert: Nuno, regarding the LLVM, I'm not sure if you're familiar with XMLVM Project, but it's sort of a cross compiler which given the opcode of one application it can cross compile it to other languages.

And it would be also nice to see this happening because I've seen especially on mobile development where you have tons of different languages and platforms to develop with, and I see that as a different approach to get your code in a singular language and try to address it to most major platforms.

Google does this with GWT, but it's not based off on the opcode itself, it's based off of the API, the Java API, but the XMLVM is also I would foresee as an approach to cross compilation between platforms, and you could then write something in PHP and cross compile it to Java or cross compile it to other languages like Objective C so you can address both Android and iPhone applications.

I would see this being a major, major difficult situation, but if somehow someone is trying to achieve these kinds of solutions it would be a nice approach, don't you think?

Nuno Lopes: I don't know this project, so this is the first time I'm hearing about the project, I just opened up the web page. So the thing is these kinds of projects look really cool on paper always, but to implement them it's a huge pile of work, so I don't know the state of this project, I cannot comment on that, but on the paper it looks pretty nice of course.

Ernani Joppert: Okay, yeah. It requires... I guess this was also a university project, Google gave them some time on their conferences, I'm not sure which of those events, and there is a very nice video about it, so if you want to check, but for sure it's nice on paper to see actually something productive happening, it's different.

Manuel Lemos: Right, it's also a different scope, I mean JIT compiler is just to optimize the current language you are using, and that seems to be more a cross compiler that you are mentioning,  writing code in one language and translate it to some other language.

Ernani Joppert: Exactly.

Manuel Lemos: Well, on this JIT compiler topic there will be a lot more to say, you could stay here forever, but we have to move on with our podcast.

Retrospective of the PHP World in 2011 and Expectations for 2012 (30:50)

Manuel Lemos: And just to mention briefly a few things that happened lately in the PHP world, actually not many things happened, even more during the Christmas season because most people kind of slow down at this time and go on vacation.

But there have been a couple of release candidate versions of PHP 5.4, and I suppose it's very close to a final release, probably during January, I'm not sure yet, we'll have to see how that goes, but these latest release candidate versions are mostly bug fixes, so I suppose most features have just been ironed to make it work properly.

But other than that, the only thing relevant, not exactly on PHP development itself, but Ilia Alshanetsky mentioned that he's sort of restarting that project that he used to track how many servers are running PHP, which PHP versions they are running, that used to run by Nexen until a few years ago, and it would give useful information about the usage of the different PHP versions, and he is restarting that project, he commented about it on a blog post he did recently on the PHP Advent series.

But I think we will get back to this later on a show of this podcast later next year. And other than that I think it would be interesting now to comment just briefly what do you guys think were the most important things that happened in the PHP world in 2011, and what are your expectations for 2012. Miloslav, do you want to start?

Miloslav Beno: Okay.  I would just comment about the past like we can remember the release of PHP, I think it was 5.3.7 with a bug and that now that they are realizing they need to input the developmental sense and to start doing continuous integration which is something Phalanger is doing, we found out it's really important to test each time so we can find bugs, so I expect that PHP will evolve in this and so it will make PHP better.

Manuel Lemos: Yeah. So I didn't get the beginning of what you said, is that your comment on the past things in 2011 or your expectations for 2012?

Miloslav Beno: I think it's both.

Manuel Lemos:  Okay. What about you, Nuno, what do you think on this?

Nuno Lopes:  Okay, so regarding 2011, so I don't remember anything really important that happened, so it was mainly a year of bug fixing, so most major developers just went dormant, so no really new cool and exciting features going in. And for 2012 I hope that we'll have some news on the JIT compiler.

Manuel Lemos: We should also hope so. Ernani, did you want to also comment on this, what do you think?

Ernani Joppert: Yes, there isn't much to ask, sometimes it's very hard to see features going forward, and I would vote for sure to have work done at this level as a JIT compiler, but as well those requests that we talked about in the previous episodes like implementation of some sort of annotation API that would then benefit frameworks in order to generate configuration files and have everything set up at the code level and not having to address this as external files, this would be nice to see as well.

Manuel Lemos: Yeah. Well, for me I think despite as Nuno mentioned everything has been slow, practically dormant, many people are expecting PHP 5.4 which is basically a version that despite it's not something that is so advanced, it does not introduce features that are really necessary, it brings a few features that some people will like, like the built in HTTP server that will make it possible for developers to test their applications without relying on a separate web server.

And also the implementation of traits that, well, from my experience what I've been seeing most developers do not quite understand what that is useful for, but those that understand it realize that it is sort of implementing multiple inheritance, it's not exactly the same, but somehow a way to do it.

And the new version of PHP for 2012 it's always good to show signs that PHP is alive even if the new features are not so exciting, and we will hope that maybe for PHP 6 it doesn't take so many years to wait for that version, and it finally integrates those major features that are harder to implement and do it right require more people like the JIT compiler that we've been mentioning.

Nuno Lopes:  But wait, just to be fair let me just add that Zend also contributed a few optimizations to the virtual machine, so PHP 5.4 has a little more than just bug fixing, so it also has some like performance fixing and a few features here and there, so just to be fair on that front.

Manuel Lemos: Well, it will certainly benefit people, although it will not be so evident. Some people will probably notice it on benchmarks, but probably most people do not even have the knowledge to evaluate those improvements, but as you mentioned they certainly happened and they are always welcome.

Sponsored Articles in the PHPClasses Blog (37:37)

Manuel Lemos: But now we are going to move on with our podcast, we are getting closer to the end, and I would just like to make a brief mention that in December the PHP Classes blog started experimenting with something new which is basically having sponsored articles which are articles that mention commercial products.

And the sponsor writes an useful article, I mean the articles themselves will be accepted, but they cannot just be a promotion of the product, they have to mention something useful about the product, how it would integrate with code that people have in their applications.

And eventually in the future we will have more sponsored articles from other companies, in the case of this first article it was written by Xeround which is a company that offers a solution that to put it in simple words it's like MySQL in the Cloud, anybody that is interested can go ahead and take a deeper look at that article that was published in the beginning of the month.

And in the future any other sponsors interested in publishing their articles feel free to use the contact link that appears in all pages of the site, so they get to know what the requirements are and eventually promote products that interest the audience of the site.

Contributor Report E-mail Messages (39:23)

Manuel Lemos: And regarding that we are going to move on, and just to mention one sort of new feature of the site, although it does not show in the site, it is basically a new type of report message that is sent by email to all authors that have been contributing to the site with their classes.

For now it's just authors that publish classes, but other types of contributors like those users that may have not contributed a class but they have led new users to the site, eventually this report message will also tell them how they are doing and how they can improve for the benefit of the whole community.

Ernani, you also have been a contributor, did you already get a message telling you about how you are doing, I mean your classes are doing in the site?

Ernani Joppert: Yes, Manuel, I got this contribution report and it looks very challenging, I see that my ranking is not the best one. So, yeah, it's really pushing me to do something to at least appear in a better situation here. I was wondering if you would mention this because it makes me look sad when I look at it right now.

Manuel Lemos: But the idea is not to put you down, it's actually the opposite, to encourage everybody on how they can do it. I don't know, well, this message is sent once a week and I don't know if you already got the message of this week, your report.

Ernani Joppert: Yeah, I got it today, and when I mentioned it makes me sad, it makes me said not because of the newsletter but because of my laziness, so I will for sure try to commit to provide something new.

Manuel Lemos: Right. The idea there is not only to tell you how you are doing but also how you can improve, so as you may see you have suggestions on things that you can do to improve, there are many types of suggestions, every week you'll get different suggestions, it will not be the same thing, but overall the idea is to promote, what you can do to promote yourself and make your work look better.

Depending on the author it may help you to somehow improve your resume because if you have been a good contributor it will always look nice on you to tell potential employers about your work and show them how you are doing.

Ernani Joppert: Exactly, yeah.

Manuel Lemos: PHP Classes it is a very large site, it has over 3,000 contributors, there are many people sort of competing implicitly, it's not something that people should take too seriously in terms of competition, but it's always nice to see you go up in the ranking once you do things that make your work be more noticeable.

Ernani Joppert: And with the Git features and the imports throughout CVS and Git and Subversion, I guess, it helps a lot to see more quality packages.

Manuel Lemos: Right. And people that have more complex packages that in the past did not feel very encouraged to update their packages because now they have lots of files to update, with the possibility of import from version control repositories they will be able to do it much faster and not lose so much time as in the past to upload each file one at a time.

And other than that, also to comment that this feature, well, practically all features that are implemented in PHP Classes are also available to authors of JS Classes site.

Latest JavaScript Objects Published in the JSClasses site (43:44)

Manuel Lemos: And on that note I'm just going to mention very briefly a few packages that have been published in JS Classes site. We do not have much time to comment on them in detail because we are getting close to the end of this podcast, but just to mention them here there is an object submitted by René Teinze from Germany named File list from directory which is basically an object that does a tricky solution for figuring of files that are on the server side from JavaScript.

There is also an Image Selector object by Arturs Sosins from Latvia, he's a very frequent contributor of the JS Classes site and also the PHP Classes site, and he sent an object in this case one for selecting images using select inputs, but once you change the select input value it also changes the preview image that is shown on the page.

But even more impressive than that is Isoworld object that Arturs also sent to the site this month which is basically a very neat object, basically what it does you can supply the identifiers of three sections of your page, it could be three divs, and it applies them to CSS transforms of CSS3, and it makes those three sections be shown in three dimensions in the page with isometric perspective.

And even provides a nice shadowing effect with a fourth element on top of an eventual fifth element that defines that ground on which the shadow of the object, the 3D cube, that will be shown will be projected.

And this is very interesting, quite impressive, and I hoped I would have more time to tell you about these objects, but unfortunately we need to move on. For people that are interested to know more about these objects they will be listed in the show notes of this episode, and they can go directly to the site and find them there.

PHP Programming Innovation Award nominees of October 2011 (46:39)

Manuel Lemos: Now moving on with our podcast, just to mention briefly also a few classes that were published on the PHP Classes in October, and they were nominated to the PHP Programming Innovation Award in November, and in December the results came out.

And basically we had like 11 nominees, and from those which of those you guys think would be more relevant, can you start Miloslav?

Miloslav Beno: Okay. Yeah, I was going through the list of these projects, and what it got to mind is the Web Scraper which won, I hope I will say it right, Jacek Lukasiewicz from Poland, our neighbors.

And what I like about it is it's always nice to see new approaches how to get some of the information from Web where there isn't one, because the Web is like it is, ready for just people, not just for mashing through the data, and this is a nice way how to get this semantic information from the website where there are no metadata at all, so they do it in a nice way how to slowly convert to semantic Internet which is kind of Holy Grail.

Manuel Lemos: Right. Well, actually when the class that won the awards for that month, October, and I'm sure many people agree with you because it was the most voted. And what about you, Nuno, which class would you like to highlight for this month?

Nuno Lopes: Okay, so let me highlight the Pragmatic BNF-a-like parser from Richard Keizer that lives in the Netherlands. So I like to see PHP as a general purpose language, so I believe we need these kinds of tools to generate parsers and so on, so this really helps making PHP a general purpose language.

Manuel Lemos: Right. That's true, and this one in particular was not a trivial work because it requires knowledge of languages, compilers and parsers, and I think I understand why you picked it because I think it's your field, right?

Nuno Lopes: Yeah, yeah.

Manuel Lemos: Well, what about you, Ernani, which class would you like to highlight this month?

Ernani Joppert: This one is not a very complex one but it's coming with the mobile world growing fast, and having this application here and just pointing to the users what is possible to do with both PHP and JavaScript, this Swype class Richard Keizer from the Netherlands, I guess it's the same author, right?

Manuel Lemos: Right.

Ernani Joppert: A very solid contributor here. He provided this package which allows you to have a PHP implementation using the Swype keyboard which basically slides words into words until you complete the phrase that you're willing to achieve, and sometimes when you have only one hand it's very, very useful.

Manuel Lemos: Right. And now that you mentioned Richard Keizer a couple of times now I would like to remind that PHP Classes organized this Innovation Award contest just to promote innovative solutions for many different problems in PHP, and this contest happens every month since 2004, but since a few years ago there is a yearly award on which the top appreciated authors are being ranked.

And coincidentally now Richard Keizer is number one, and there is still one month left which will include the nominations of December, so this is not the final result but there are great chances for him to contribute, I mean for him to win, but we have to wait and see anyway. This is only a reflex of a continued work of submitting great packages to the site that provide innovative solutions.

Well, but going back to October, on my part I think it's hard to just highlight one given that there were 11 that were nominated, but apart from those that you mentioned, I would like to highlight the World Time Class by Jonathan Discipulo from the Phillipines.

And basically what this class does is to access NTP server to get the current time, hopefully from a server that provides an accurate version of the current time. And this could be interesting to make sure for time synchronized applications that really need to get the current time accurately. And so this class from Jonathan will be appreciated for those developers that need to use this kind of component in their applications.

Conclusion (52:49)

Manuel Lemos: Well, basically we are at the end of this podcast, I would like to thank you both, Miloslav and Nuno, as well Ernani as always.

Do you guys have anything else to comment on that you would like to say, anything that was not asked that you would like to mention, Miloslav?

Miloslav Beno: Yeah, I think we mentioned important features and everything, and if people want to they can always see our blog, or they can find us on Facebook or Twitter if they are interested in using our project.

Manuel Lemos: What is your Twitter account?

Miloslav Beno: It's @phpcompiler. And if they are interested in mine it's @miloslavbeno, maybe I will say something interesting.

Manuel Lemos: Well, that certainly will show in the show notes for those that have doubts on how to spell that, but I'm sure they will find your contact very easily. What about you Nuno?

Nuno Lopes: I think that's basically it, so we talked about the importance of Jit compilers and we gave a brief overview on some of them, and I think that's it. If you are interested just Google it and I think you'll find a lot of information on the Web about JIT compilers.

Manuel Lemos: Okay, I think that's all for now, and on my part have a happy 2012, and don't forget to run because the world will end at the end of next year if you are a believer of course, I am not, but I'll leave that as a reminder.

Nuno Lops: I hope we get PHP 5.4 before that.

Manuel Lemos: Well, at least that. I have a feeling that it will be out in January still. On my part that's all for now, bye.

Ernani Joppert: Yeah, thank you, bye, bye.

Nuno Lopes: Bye.

Miloslav Beno: Thank you, bye.

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

1,615,240 PHP developers registered to the PHP Classes site.
Be One of Us!

Login Immediately with your account on:


1. LLVM project - Peter (2012-01-22 02:55)
LLVM project... - 1 reply
Read the whole comment and replies

2. Nice talk - ajay (2012-01-06 04:18)
Nice talk... - 0 replies
Read the whole comment and replies

  Blog PHP Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog The Debate of Making ...   Post a comment Post a comment   See comments See comments (3)   Trackbacks (0)