Proposal for Faster handling of PHP Sessions (20:18)

Proposal for using Constant Scalar Expressions (27:30)

Proposal for Switching to Free JSON extension (34:06)

Top Featured Classes in Google Search (40:22)

JavaScript Innovation Award Winners of June 2013 (42:45)

PHP Innovation Award Winners of June 2013 (47:55)

Meet Manuel Lemos and Cesar Rodas in Person in PHP Events (54:38)

Conclusion (57:37)

Introduction (0:20)

[Music]

Manuel Lemos: Hello. Welcome to the Lately in PHP podcast. Or yet another attempt to record this podcast. After a lot of struggle with Google+ and Internet outages, finally, I think we are going to make it. But this time, we have a different host... Cesar Rodas.

Hello, Cesar. How are you doing?

Cesar Rodas: Hello, Manuel. I'm doing good.

Manuel Lemos: Thank you for coming and filling in for Ernani. He was not able to participate in this recording today. He had a problem in his family, but I hope everything will go OK and he can get back next month.

New PHP 5.4 and 5.5 Releases (1:11)

Today, we are going to have yet another interesting Hangout because we will be covering several proposals for an eventual PHP 5.6. But now, I'm going to start to comment first about the latest releases of PHP 5.5 and 5.4.

This month, there were two releases for both of those revisions, 5.4.18 and 19, and then 5.5.2 and 3.

Now, basically this is just a regular update that is expected after a major release and many bug fixes, which is normal because finally this release is... I mean, 5.5 is getting a good round of testing from users from the world that is actually trying to use this new version and was not using it before because it was still in Beta.

OK, I think there is not much to say about this. Cesar, are you using PHP 5.5? Anything you think should be worth mentioning?

Cesar Rodas: I'm not yet using the PHP 5.5 anywhere but I'm switched to the 5.4. I have the latest version running on a couple of servers at work and at home. I don't see any major change. I'm looking right now at the change log.

Manuel Lemos: Yeah. It seems to me just bug fixes that are usually appearing a lot after the main PHP release, that in this case was 5.5. Well, anybody that is already adopting this version probably is concerned to use it as much bug-free as possible. So, you should consider a quick upgrade soon.

Anyway, there is not much more to say about this, so let's move on with the next topic.

New PHP Core Developer Sponsored by SmugMug (3:48)

Manuel Lemos: First, I would like to comment one thing new, at least that I know about. It's about a new core developer that is actually a sponsored of developer.

SmugMug, a company that use PHP a lot, they are actually sponsoring the development of PHP by hiring a person in their company that instead of working on their products, I think, they'll be working full time as PHP developer.

So, they'll be working on fixing bugs, and eventually new features, feature requests. In this case, it was Michael Wallner. If I'm not mistaken, I think it was Rasmus that requested that companies sponsor the development of PHP by hiring somebody that could work full time on PHP development. Then, I think things are starting to happen.

I think it is a good thing. What do you think, Cesar?

Cesar Rodas: Well, I believe that is right because most of the core developers that I know, they have some other work. Some people are working full time into something else and some other people, they are hired by projects. But PHP is like their hobby project.

Manuel Lemos: Yeah.

Cesar Rodas: So, I believe that is right. I believe that would give to the project itself more maturity at some point. And I believe that is going to be great, because that happened to some of the languages like the guy from Python. He was hired by Google and he could use 20% of his time working on Python and things like that.

Manuel Lemos: Right.

Cesar Rodas: So I believe that is great. And that is a great way of giving something back to the community from those startups.

Manuel Lemos: Yeah. Exactly. Well, in this case it will be 100% of the time, because this is a sort of sponsorship.

Proposal for Reading POST data from streams (6:15)

Manuel Lemos: And, as we may see here in this other page about a topic, that Michael already started in the PHP Internals List. He's already showing some work.

In this case, he is preparing a patch to be able to read the POST request data from streams rather than that variable $HTTP_RAW_POST_DATA, that usually is used to read for instance, if your server is handling SOAP requests, usually you would read this variable to get access to the original XML of the SOAP request data.

And this would work, but for instance, if you are getting a large amount of data in the post request, it will probably not be adequate to read it all at once to a variable because it would take a lot of memory. And probably, it would hit one of the PHP memory limits.

So I think this is an interesting feature. Personally, I have not had any use for it, but I can imagine other people that may have applications that need to handle large amounts of raw POST data.

Cesar, did you have that problem in application that you have worked on dealing with a large raw POST data requests?

Cesar Rodas: No personally, no. But I see that it gets sort of trendy to send JSON in a raw POST. And I believe that if you want to handle a large set of data, it is probably helpful.

Manuel Lemos: Yeah.

Cesar Rodas: So, I don't believe that I would use this but if you are developing some sort of API or RESTful thing, that might be really handy.

Manuel Lemos: Yeah. Probably, large files that are sent via custom POST requests rather form submissions as usual.

Cesar Rodas: Yeah.

Manuel Lemos: Well, this is just one of several interesting proposals for an eventual PHP 5.6 release because features that change the way PHP 5.5 works internally probably will not make it in this version. They will make it eventually in 5.6, I think.

Proposal for Handling Uploaded Files with More than 2GB (9:11)

Manuel Lemos: And another feature that is being also proposed here... let me share the screen again... in this case, submitted by a Ralf Lang.

It's basically proposal to deal with the current uploaded file limit that is in 2GB. In this case, it would be able to deal with larger files. Well, I never had an application that needs to deal with larger files uploads via PHP. But who knows, now that people are using the cloud for everything.

So there is this proposal by Ralf Lang here. And he's just basically proposing to override that limit. I think it has its uses. I don't know, Cesar, if you had any use for allowing larger than 2GB uploads.

Cesar Rodas: I'm not sure, but those will be handy. However, if I would need to start a thing that is very specific, I would do that not in PHP.

I would probably just let it be handled in something that could just operate locally and then send it to PHP. Because slow clients are everywhere, we cannot afford to open one PHP process and wait there forever, basically. So, I'm not sure how...

Manuel Lemos: Well, actually, the problem is not exactly in PHP to deal with large files. It's just that the configuration of PHP was not yet ready to deal with this, I think. If I'm not mistaken, that would be the problem. Well, if this feature request is addressed, I think there will be no problem.

Cesar Rodas: Yeah.

Manuel Lemos: Unless you are not in a 64-bit system, I think.

Cesar Rodas: Yeah. But nowadays, everything is in 64 bits. So that shouldn't be a problem if we're talking a couple of servers. I believe that is a cool feature I never needed before but I might need it someday. So I'm glad that someone is already taking care of that. That's the beauty of the open source.

Manuel Lemos: Right. Well, actually, I have servers in 32 bits. But that's because I never needed to have more. In my development machine, I used 64 bits because it's just a matter of upgrading the kernel of the operating system and eventually some packages that need to be switched.

Cesar Rodas: Yeah. I have one 32 bits server that I created over about four or five years ago. And I have nine servers for pet projects and they're all 64 now. So, that is the default, I believe.

Proposal for Dealing with Large Files in 32 Bits Systems (12:44)

Manuel Lemos: Right, and talking about the 32 bits, there is another proposal for a feature that concerns exactly that limitation. Because if you need to deal with a file larger than 4GB and you are running a 32 bits system, you have the problem where you're not being able to express the length of the file in an integer that will have only 32 bits.

So there is this patch being proposed by somebody called X Ryl, whatever is this name. It's by somebody called Cyril but in the header, it have here some other name.

And the proposal here is to use floating point numbers up to 52 bits so they do not lose precision. And if the files will have more than that, probably, then the size would be rounded. But I don't think that's a suitable idea.

Anyway, I wonder why people need this patch so much rather than upgrading their OS. I don't know. Do you have any idea why, Cesar?

Cesar Rodas: I have no idea why. And that surprised me a little bit. I'm looking into the thread and he managed to send a patch. People say that if it makes sense, it could be at 5.6. But what's the... to like all my service to 64 bits because when I installed MongoDB on a 32 bits machine, it works up to two gigabytes. And that's it. Nothing to do about it. But that's for a different problem. That's for the memory mapping thing.

Manuel Lemos: Yeah, I think it's mostly a matter of upgrading the kernel and switching the packages, too.

Cesar Rodas: Right.

Manuel Lemos: One thing that I was concerned in the past, it prevented me to upgrade to 64 bits, is that I thought that if you would upgrade to the 64 bits system, you have to redo the database files for MySQL.

And I just realized that's not even necessary because the files that MySQL uses are not tied with specific number of bits that your system is using. So it will work in 32 bits and 64 bits and it will be the same files. So that would not even be a problem.

So, maybe this guy is stuck with some Windows version that you need to pay more to get the 64 bits.

Cesar Rodas: Well, a couple of things, if you have a 32 bits hardware, there is no way you can install a 64 bits software.

Manuel Lemos: Right. But what kind of CPU is that of the 32 bits? Is it Pentium 1?

Cesar Rodas: No, Pentium from six, seven years ago.

Anyway, the second thing is that I'm not surprised about the MySQL thing, the dimension, because that happens even into SQLits. Like you take the same file in a big engine machine or a small engine machine, which are much, much, much greater, different changes and they'll will work.

Manuel Lemos: Yes, that's just me that I was not aware of that and I should have upgraded to 64 bits.

Cesar Rodas: Yes.

Manuel Lemos: I was trying to play safe because I was not sure about that. I should have tested it.

Cesar Rodas: And the third thing that I would like to mention is that next time that I would actually need that, how I would do that is I would create a new MySQL server. I would put it as a slave server and it would just replicate all data and then just switch it.

Manuel Lemos: Yeah.

Cesar Rodas: I've been doing that last weekend and it's very, very simple.

Manuel Lemos: But did you use multiple machines or just one machine?

Cesar Rodas: I was testing into one machine. I created like five MySQL servers and I was playing with the replication. But that took me like five minutes. So, it's simple.

Manuel Lemos: Nothing like testing things and realizing that it's much simple than you imagine.

Cesar Rodas: Yeah.

Manuel Lemos: I did not do that and I was one supposing that it was much more complicated. In the end, it's nothing like that. Well, now I know. Next time that I upgrade to a new server, I'll think about it. Because my concern is just downtime, if you...

Cesar Rodas: Yeah. Yeah.

Manuel Lemos: If I have to dump the database and rebuild it, it's like hours doing that.

Cesar Rodas: Yeah.

And another really cool thing is that MySQL that does differently is that you can add a slave and you can use SQL operations there. Which is really cool, that doesn't happen in MongoDB.

Like into your slaves, you cannot perform any writes. So, that makes that you can play multi-masters and things like that. That was what I was testing, how to make multi-masters and things like that.

Manuel Lemos: Right. I'll get there when I need to.

[Laughter]

Manuel Lemos: One day, I'll have such a loaded system that needs to be splitting files on masters and slaves.

Cesar Rodas: Yeah. I'm not at that point yet, but I've been asked. There is one company that has like five MySQL instance replicated. And in different...

Manuel Lemos: In the Cloud?

Cesar Rodas: No, in different cities. And when the Internet goes down, their entire system cannot work.

Manuel Lemos: That's a different use case. They did not do it for scalability.

Cesar Rodas: Yeah.

Manuel Lemos: They do it for having some fault-tolerance.

Cesar Rodas: Yeah, for data locality, I believe that is called. Oh, I don't know how to call it. But basically each city must have its local server. And they should replicate with the other five cities. Basically like that.

Manuel Lemos: Right. Well, that sounds fine.

Proposal for Faster handling of PHP Sessions (20:18)

Manuel Lemos: OK, moving on with other interesting proposals. There is another one this time that is related with the sessions. Let me share the screen here, so we can actually read this.

This one is from Yasuo Ohgaki. Sorry, if this is not the correct way to pronounce your name, Yasuo.

And the idea here, I think, is to make sessions more efficient. I thought this was not really happening, but from what I understood, he's saying that, for instance, if you do some access to PHP script that does not change any variables in your session, it still writes back the session data again and again and again. That seems very inefficient and probably wasting resources that otherwise would not be needed. So the patch that he's proposing is not write session data again if it does not change.

I saw some comments here that you still need to be able to figure if the last access to the session data was less than the session timeout. So you need to garbage collect the expired sessions or not. But in that case, I think it would just need just to do a touch in the file just to update the last modified date, not exactly write below session data again.

I think this is an interesting proposal. I was not really aware that PHP sessions would do that, write themselves again and again even if the session was not updated.

Were you aware of this detail, Cesar?

Cesar Rodas: Well, I wasn't aware on the details of the implementation. However, I assumed that. One thing that I didn't like about how the PHP sessions are handled is that it is handled like one chunk of, like one piece of thing. Like you will modify one variable because it is just one hash, you add something new, it will never do one diff. It will send the whole thing back.

Manuel Lemos: Right. It would take even more time to do the diff, actually.

Cesar Rodas: Yeah. I'm not concerned about that, though. I am concerned about what happens if there is a race condition. Say, the same user with the same session changes two things.

Manuel Lemos: You're right. If I'm not mistaken, it uses locks to prevent multiple writes. But I'm not really sure about that.

Cesar Rodas: Yeah, I'm not sure...

Manuel Lemos: That's what I remember.

Cesar Rodas: I'm not sure either. But when I was dealing with another program in language to do sessions and when that thing happen often, I had to do a lot of things, like using hash and sorting it into Redis. It was a hassle.

Manuel Lemos: Yeah.

Cesar Rodas: Plus, the biggest site that I've been working with that handles like millions of sessions every day, they store the session in the database. So, they have their own handlers, because the site was created before the PHP sessions was actually created.

Manuel Lemos: Yeah, that's like what I have. I still do that. And other than that, I use caches to avoid dating the database on every request, because it would be really a stupid thing to do.

Cesar Rodas: Yeah.

Manuel Lemos: When I need to update the session data, I don't rebuild the cache. I just invalidate the cache and next time it is necessary to rebuild it. And it seems to work well. And if you have a single server site, you could use, for instance, local files for caching the session data.

Cesar Rodas: Yeah.

Manuel Lemos: Or you can also use something like a memcached if you have a cluster of sites... I mean, servers... to manage the access to the site.

Cesar Rodas: Yeah, I use the PHP sessions. It's really handy and it works out of the box so I don't reinvent the wheel. But I realized that when I wrote or installed, I don't remember a Redis handler. So, I realized that my session was one serialized thing. And then, here, it started, like what will happen if two sessions at the very same time, they both do different things?

Manuel Lemos: Right. I think some developers do not have a great notion of what happens behind the scenes. And sometimes, they push a lot of data to session variable just because it's easy just assigning a variable.

But you need to beware of that because it may be lots and lots of data and your site may start to get very slow if you start pushing too much data to session variables.

And, well, that's not a trivial thing that most average PHP developers know.

Cesar Rodas: Yeah. Sometimes, I was actually asked how the PHP Compiler was written in C if the PHP itself was a program language. So some people don't even have a notion of what is going on.

Manuel Lemos: No. There's a lot of confusion.

[Laughter]

Manuel Lemos: But it's like everybody. When you were born, you didn't know anything and then you start learning. So, all they need to do is to watch these hangouts, because we teach a lot of interesting information. And we are also very humble.

[Laughter]

Manuel Lemos: You never pretend to know everything.

Cesar Rodas: I don't know anything. I am way far from that.

Manuel Lemos: Yes. Everybody is way far.

Proposal for using Constant Scalar Expressions (27:30)

Manuel Lemos: OK, and now, moving to yet another feature proposal this time by Anthony Ferrara. He's been submitting quite a few interesting proposals. He's been very active.

There are other proposals this month from him but I thought this one was more interesting. One about being able to declare constant values using expressions rather than single constant values.

For instance, usually, you define constants like this. But if you want to do something more complicated, for instance, a simple calculation like adding numbers or some multiplication or whatever, you are not able to do it currently. So his proposal is to allow to use simple expressions to make basic calculations when you declare constants.

I think this would be also interesting to use in defines, not just constant. But I'm not sure if Define already allows that.

Cesar Rodas: Yes. It does allow it to because that is a variable.

Manuel Lemos: So, the idea is to be able to do the same, right?

Cesar Rodas: Yeah. The problem I believe is that the constant, they belong to...

Manuel Lemos: The class declaration, right?

Cesar Rodas: Yes. So, inside the class declaration, when a class appears, there's no runtime environment, I believe. So, some variables, they don't exist. So, that's why it was simplified, like you could use constant or a line of constant.

Manuel Lemos: Right.

Cesar Rodas: Like numbers or strings.

But I've been reading into the mailing list and it got a lot of people liking, like people who are often just disliking things.

[Laughter]

Cesar Rodas: So, I believe this would be in the PHP, in the next versions. Personally, I believe that this make things easier in terms of code and it shouldn't add much of an overhead. I believe that...

Manuel Lemos: Right.

Cesar Rodas: Most of these variables...

Manuel Lemos: I think this would happen at the compile time.

Cesar Rodas: Exactly. So, that will happen once and then the final value will be cached into your favorite opcode cache.

Manuel Lemos: Right.

Cesar Rodas: So, that will just happen once. I believe...

Manuel Lemos: Right. The opcode cache already used the computed value, not the actual expression.

Cesar Rodas: Yeah.

Manuel Lemos: And for the people who are wondering, yes, PHP is a compiled language. But probably not a compile language in the sense you have your C or C++ compiler that generates a native machine code. That is possible but that's with the HipHop Compiler of Facebook.

So, when we say these things would happen at compile time, it means when the PHP... actually, the Zend Engine... would compile PHP code into opcodes. So, if you have this constant here that says that $baz equals to 'Hello' and concatenated with ' World!', in reality, it would store it like $baz = 'Hello World!'. It would be a single string in the end.

And I think this is interesting. For instance, a common use case that I have for this, that happens to me a lot in my codes sometimes, I need to use constants that define for instance the number of seconds in a day. So I can make calculations with the time stamps and figure the number of days between a time interval.

And instead of putting 86,400, which is the number of seconds a day, I could just declare it like 24 * 60 * 60. And that would be something that would be more readable, because I would look at it and would not wonder what is this 86,400. No, it's just 24 hours * 60 minutes * 60 seconds. Oh, now, that makes more sense.

And so, I think this will be a good feature.

Cesar Rodas: Yeah. The good thing though is the people, they proposed ideas and they send it with a patch. So, you can actually go and see and if you like to test it, you could just compile it yourself and see how it works.

Manuel Lemos: Yeah.

Cesar Rodas: And I do like this feature. I would like to see in some PHP version soon. I will certainly use it.

Manuel Lemos: Right. But did you see any patch for this version already or just a proposal?

Cesar Rodas: No, the patch and the proposal. I can send you the link so you can publish it later.

Manuel Lemos: No, no, just out of curiosity because I could just see only the proposal, not the patch. But OK, I confess I did not follow the whole discussion.

Actually, most of the discussions are always "Oh, I have an excuse to not want that feature." But sometimes, it's different. Rarely, but sometimes it's different.

Cesar Rodas: Yeah. I do like this feature and this feature was accepted by many people who were often saying no to many cool things. I want to say...

Manuel Lemos: It's so awesome. It's amazing.

Cesar Rodas: Yeah.

Manuel Lemos: That amazing. The usual naysayers, this time they said yes.

Cesar Rodas: Yeah.

Manuel Lemos: They all complained at PHP Classes hangout, as usual, just because I said that.

[Laughter]

Manuel Lemos: Just kidding.

Proposal for Switching to Free JSON extension (34:06)

Manuel Lemos: Well, finally, there's one another feature that was proposed. Actually, it's a replacement of a library that is being proposed in the case was for the JSON extension.

What happens is that currently the JSON extension relies on some code that is not free. It's free as in free beer, but it's not free as in free software.

Cesar Rodas: As in freedom.

Manuel Lemos: And this causes problems to Linux distributions because if they want to distribute the binaries for this extension together with the other parts of the PHP distribution, it must be GPL compatible. And it is not the case of the code on which the current JSON extension relies.

So, there's a message here from Remi Collet to replace it with some other extension that... I think that's it. Or am I confusing things? Because I am seeing things like JsonIncrementalParser.

Cesar Rodas: I have no idea but I've been reading the discussion and what people say is that it is in those distributions, the JSON won't be built-in the PHP package but it would be in a different package. And that package would be a dependency.

Manuel Lemos: Right.

Cesar Rodas: So you will still have the JSON functions but they will be in another repository, probably in the "non-freedom" or "evil", I don't know how they call them, but you will still get them.

Manuel Lemos: Yeah.

Cesar Rodas: Like this is not a problem for the final user. But these people want to avoid this, so they want to replace the backend engine which is actually generated. And that is what I think. This is what I believe.

Manuel Lemos: Yes. I think that's it. There is the other, the actual message here that started this discussion from this guy from the Fedora Project. He's proposing to switch the JSON extension which has a problematic non-free license to jsonc dropin free alternative.

Cesar Rodas: So, this is a political problem, not a technical problem.

Manuel Lemos: Exactly.

Cesar Rodas: I believe that you shouldn't have a problem if you use one of these distributions.

Manuel Lemos: Yes.

Cesar Rodas: And if you compile PHP yourself.

Manuel Lemos: Right.

Cesar Rodas: So, that is what I usually do.

Manuel Lemos: Yes. The restriction is that these distributions could not compile binaries of the original extension.

Cesar Rodas: Exactly.

Manuel Lemos: It's like the NVIDIA extension. If you want to install in your Linux distribution, you have to download the packages for the NVIDIA kernel modules from NVIDIA site. There are free alternatives but it's not the same.

Cesar Rodas: Yeah, the thing is that it is free to use it in terms of price but not in freedom. That means that they are not legally able to distribute it in the binary form. In case of NVIDIA, I don't know what is the problem in terms of the PHP JSON library. I don't see what is the problem, because it is open-source, I would say. I don't know what is the problem.

Manuel Lemos: I think the license is not compatible with the GPL.

Cesar Rodas: OK.

Manuel Lemos: And then, the PHP license is compatible with GPL but the license of this JSON parser, it seems could not be compatible. And that's the political problem as you said.

Well, I think the only consequence to this is if it does not come built in and the Linux distribution that some hosts use, they probably will not have it enabled. Then, the users would complain that they are not able to call the JSON functions.

Cesar Rodas: So, I've been reading. I'm following on Twitter most of the PHP Internals guys. And what they said, if I understood it correctly is that it will be available always but in a different package. So to final developer, there will be no change. Only to the free software T*lib*ns, they want it to be built in two different packages.

[Laughter]

Manuel Lemos: All right, that's an interesting adjective.

Cesar Rodas: I'm sorry, I don't do free software. I do open-source. So, they are two different things.

Manuel Lemos: OK. Your religion permits that.

Cesar Rodas: Yeah. I don't care whatever you do...

Manuel Lemos: OK. This is just a detail. For some reason, your PHP host does not have the JSON parser installed, what may happen is that the extension may not have been enabled because of this problem with the licensing. Well, this may happen when you use Linux distributions. OK. Anyway, I think we covered this enough.

Top Featured Classes in Google Search (40:22)

Manuel Lemos: Now, moving on to one of the regular sections on which we comment about the winners of the Innovation Award. But first, I would like to just comment briefly about a small new feature of the PHP Classes and JS Classes sites which is related with the top packages that are getting more interest with users that are searching about them on search engines like Google.

So let me increase the font here. If you go on the PHP Classes home page for instance, as a non-logged user currently, you'll see on the left side a section that says "Featured Classes". And these are the classes that are getting more users from search engines. And now, the site shows this listing just to give more evidence to this classes.

And now, if you are the author of any of these classes, once your class makes it to the Top 20 most visited classes, you'll get an email, so you are aware your class is being featured.

Also, a similar feature like this is about articles that you post on blogs of your packages. On the right side of the home page, there is a section that says "Featured Class Articles". On this, you see articles about packages that were published in the PHP Classes site. And these are the ones that are getting most visitors so far. So you'll see here the listing of the articles which are the featured class articles.

Well, this isn't really, really important feature. The site is just using something that was used to give more evidence to whoever is submitting packages and articles that are more interesting to the point of getting more visitors from the search engines.

JavaScript Innovation Award Winners of June 2013 (42:45)

Manuel Lemos: Well, with that, we are going to move on to our regular section on which we comment about nominees of the Innovation Award. And we start this time with the nominees of the Innovation Award of the JS Classes site. So the latest, JavaScript Classes published in the JS Classes site on June.

Let me screen share it here. In June, there were not many nominees, but there are a few, like three. People were on vacation, I think. They did not submit many packages. But there were a few nominees.

Cesar, which ones would you like to comment?

Cesar Rodas: I would like to talk about the Infinite Scroll plugin. I picked this because I think it's very interesting. I needed this several times and I ended implementing it myself. And I dislike doing front-end things. So next time, I will just download this package and use it.

Manuel Lemos: Yeah.

Cesar Rodas: I looked into its source code. I like its implementation, so I would definitely use it next time.

Manuel Lemos: Right. This one was by Satyam Kumawat from India, right?

Cesar Rodas: Right. I forgot to mention that.

Manuel Lemos: Yes. Well, that is great because he has been publishing several interesting packages and I hope he continues to publish more.

Basically, we have said it all on that. The Infinite Scroll plugin just do as you scroll your page, it uses AJAX requests to pull more content.

Cesar Rodas: Yeah. So, it will give you the Facebook effect. Like when you go down, it will just load more information from your server.

Manuel Lemos: Right. It's not just Facebook. Many sites use that. So it's a pretty common...

Cesar Rodas: Yeah, feature nowadays.

Manuel Lemos: Right. I also like to comment about the other two. Let me share the screen here. And I will start by this JS TreeView plugin which is a package from Toure Iliass. I'm not sure if this is the right way to pronounce it.

He's from a country that we do not see many users. I confess that I had to check in the map. That is a country in Africa. It is interesting that an author from Benin is publishing his packages here. Actually, he's a regular contributor already. He has submitted six packages so far.

And, in this case, it is a plugin that can turn list of objects into collapsible trees of elements. And you can configure the presentation of those collapsible trees that expand and collapse. You can use CSS to customize the presentation of those elements on the page. So, I think this is useful because it's a very common need that many sites have.

So congratulations also to Toure for his contribution. And then, moving on to another package, this time Data Page which is a package from Lucas Tiago de Moraes from Brazil. This is actually a very simple package. But it was nominated because there was not yet a component to do this, which basically calculate the number of entries, of listings, that are split into pages taking in account the limit number of pages, the total number of entries and the current number of page. So, it can calculate the offsets of the next and previous pages and the first and the last.

That is a very, very common use. We see a lot of PHP components that do this. But for JavaScript, I think this was the first time we see something here in JS Classes which is still a relatively young site and still growing its base of contributions.

So, thank you Lucas for your contribution.

PHP Innovation Award Winners of June 2013 (47:55)

Manuel Lemos: And now, we are going to move on to the nominees of the Innovation Award of the PHP Classes again of June. This time, we have like four nominees. Cesar, which ones would you like to comment?

Cesar Rodas: First one, I would like to comment about Puller, which is a package that scrapes product data from e-commerce site.

I think this is interesting because I was building similar packages for customers not so long ago. And it is nice that somebody actually share it. So, next time, I will just download and use it. And it is written by Evaldo Barbosa and he's from Brazil.

Manuel Lemos: Right.

Cesar Rodas: And the second, it's about the Google Cloud Print API. I never used this product myself, but in the past, I dealt with this API. I don't remember for doing what exactly, but I did that. So, I believe that this will be useful to somebody.

Manuel Lemos: Right.

Cesar Rodas: And it is written by Yasir Siddiqui. I don't know how to pronounce it, I'm sorry. And he's from Pakistan.

Manuel Lemos: Right. I think it's a recent API that Google is providing to simplify finding printers on your network or maybe other networks. So you could use this API to send documents to other printers that Google knows where they are, but you probably would have a hard time even if you have something like Samba or whatever it is called.

Cesar Rodas: Yeah. But when I worked with this Google Cloud Print API, it was built on top of XMPP. I looked into this implementation, it looks different and much simpler. And I...

Manuel Lemos: Right. It seems basically an interface to call the API.

Cesar Rodas: Yes.

Manuel Lemos: OK, on my part, I would also like to comment on a couple of classes starting with this one, PHP Web Outlook Access.

Let me share the screen here. Let me try to increase the font.

This one is from Antonino from Italy. And what the package does is to access Microsoft Exchange instances over the Web. And this Microsoft Web Access has an interesting story that not many people know about it.

It was probably the first large AJAX-based application that was developed in this case by Microsoft many, many years ago. And they served as inspiration for Gmail. But we are talking about something that was starting to be developed in the year 2000 or 2001 probably, if I'm not mistaken.

And in this case, it solves a problem of accessing Microsoft Exchange instances or via Web services instead of being connected to a Windows machine and do that. So, you can do this from a non-Windows machine. And that's interesting.

Another detail is that this package was developed by this developer, Antonino, from Italy. And I'd like to bring up just an issue, that every nominee that... Well, he's nominated to the Innovation Award, he's eventually entitled to a prize. And in this case, I tried to contact this developer but his email address is bouncing. So I do not have an alternative way to communicate with him. So, Antonino, if you are listening to this, you are entitled to a prize but I'm not able to contact you to let you know, because your address is bouncing.

And I'm afraid this happens to several other developers. They're entitled to prizes. So if for some reason you were nominated and were not contacted, probably you have an issue with your email address that you have in your records in the site.

And maybe you need to replace it with a better, proper email address to contact. But that's a side comment that I wanted to make.

And finally, moving on to the last class. I would like to also mention about this other class, PHP Price Rounder Calculator by Ovunc Tukenmez. I'm sorry, I'm sure I'm not pronouncing your name correctly, Ovunc.

So, just to mention about this class, basically, what it allows to implement several customized rules to determine how prices are rounded when we may need to provide discounts or things like that and probably to not give an exact price value, price amount. So you need to define how the pricing are rounded to reach the final price of the product.

So this class implements that and allows you to define several rules to set prices and how the prices may be rounded depending on pricing range and things like that.

So congratulations for Ovunc for this unusual type of class. I'm sure several people find good uses for it.

Meet Manuel Lemos and Cesar Rodas in Person in PHP Events (54:38)

Manuel Lemos: Well, basically, with this, we practically concluded this Hangout. I just like to mention, by the end of the month... I mean, the end of September and early October... I will be traveling to the Google offices in Mountain View. There will be an event over there. It's not exactly related with PHP, but there were some developers that expressed interest in meeting in person So, if you are interested to meet me as well to talk about PHP and any other related topics, feel free to contact me.

I'm not sure if I'm going to be able to record the next hangout before that event. So if you are interested to contact me, just use the contact forms of the site to reach me so I'll let you know what is going to happen. Because I'm not even sure what will be the details. What I know is that I'll be around the San Jose area in California.

Well, with that, I'd like to thank you, Cesar, once again for coming and filling for Ernani. And, as always, I hope to count on you again. Also, to have your great insights since you are a very experienced developer. It is always great to have your comments about the topics that we discuss here. This time we talked a lot about proposed features and it's interesting to have your points of view about the proposed features.

Cesar Rodas: OK, no problem. Anytime. Also, I'm going to be traveling next month, too. At the beginning of the month, I will be in a conference in Argentina. In a PHP Conference, so if anyone wants to just share a beer, or talk about things, or go to my talk, it will be in English. Although, it is my second language, I like it. So, just contact me at Twitter or somewhere. I'm also going to be traveling not to America but to South.

Manuel Lemos: OK. When is it? Do you know the exact date?

Cesar Rodas: I believed it's the 4th and the 5th of October.

Manuel Lemos: OK.

Cesar Rodas: It should be on Friday and Saturday. I don't remember the exact dates.

Manuel Lemos: OK, so, if they want to meet you, they should you bring a beer, right?

Cesar Rodas: Exactly, yeah.

[Laughter]

Manuel Lemos: That's the price.

Conclusion (57:37)

Manuel Lemos: OK, once again, it was great to have you here. And on my behalf, that is all for now. Bye.