Author: Manuel Lemos
Viewers: 5
Last month viewers: 1
Categories: Lately in PHP Podcast, PHP community, News, PHP opinions
This was one of the main topics discussed by Manuel Lemos and Ernani Joppert in the episode 36 of the Lately in PHP podcast.
They also discussed some new features proposed for PHP 5.6 like incremental decoding of large JSON data streams and overloading arithmetic operators for arbitrary precision math.
They also debated the meaning of Google finally adding support to PHP in their cloud hosting platform Google AppEngine.
Also in this episode it was discussed an article about good practices to quickly detect and fix PHP code bugs that only show up in production environments.
Listen to the podcast, or watched the Google hangout video, or read the text transcript to learn more about these very interesting PHP topics.
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
Introduction music Harbour used with explicit permission from the author Danilo Ercole, from Curitiba, Brazil
RSS 2.0 feed compliant with iTunes:
http://www.phpclasses.org/blog/category/podcast/post/latest.rss
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
- PHP 5.4.15/16 and 5.3.25/26 releases
- Proposal for Operator Overloading for Arbitrary Precision Math
Read the podcast transcript
Contents
Introduction (0:20)
PHP 5.4.15/16 and PHP 5.3.25/26 releases (1:26)
PHP 5.5 Final Release imminent (3:18)
JSON Incremental Decoding (6:37)
Overloading Arithmetic Operators for Arbitrary Precision Numbers (9:23)
PHP Support Google AppEngine Finally (16:17)
10 Steps to properly do PHP Bug Tracking and Fixing as Fast as possible (53:58)
JavaScript Innovation Award Winners of March 2013 (1:02:09)
PHP Innovation Award Winners of March 2013 (1:09:49)
Conclusion (1:21:24)
Introduction (0:20)
Manuel Lemos: Hello. Welcome to the Lately in PHP podcast, Hangout. I don't know, I think I should rename this to...
Ernani Joppert: Right.
Manuel Lemos: ...Hangout because the podcast seems so old.
Ernani Joppert: Yeah.
Manuel Lemos: This is episode the 36th. We've been already through three years of Hangout and podcast.
And as always, I have here with me, Ernani Joppert. Ernani, how are you doing?
Ernani Joppert: Hello, folks. I'm doing great. Hello, Manuel. Great to be here as usual.
Manuel Lemos: Sometimes somebody has to fill in for you, but it's as usual.
Ernani Joppert: But when I'm here, I'm very glad to be.
Manuel Lemos: OK, that's right.
Well, today, we are having sort of a late Hangout. I've been busy by the end of last month, I was not able to record. But finally, we are recording this Hangout. And as always, we have several interesting topics to talk about.
PHP 5.4.15/16 and PHP 5.3.25/26 releases (1:26)
Manuel Lemos: I'm going to start by the usual batch of topics, things that have been happening in the PHP world.
Let me pick the right window to screenshare. Can you see this correctly, Ernani?
Ernani Joppert: Oh, yes. I have myself on mute here. If you can just increase the font a little.
Manuel Lemos: Yeah. OK, I have to increase the font in the correct window.
[Laughter]
Manuel Lemos: Because I increased the font on the Hangout window and that's why. I think now, it's much more visible.
Well, we have the regular updates on PHP. There were actually two updates for PHP 5.4 and 5.3. If you go here to the ChangeLog page, you can see this has been mostly a release with some bug fixes.
Personally, I did not find anything worth noticing with more attention than usual. Anyway, it were a couple of PHP 5.4 releases as well PHP 5.3.
And nothing special to comment about this, but it's always worth for people to pay attention to see if there are any outstanding bugs that were fixed that affect their applications.
PHP 5.5 Final Release imminent (3:18)
Manuel Lemos: Well, other than that, I'm going to move on to other topics, namely, talking now about PHP 5.5 that started its own release schedule dates. So it's no longer in Beta.
I have not noticed anything that I could mention about this release candidate versions. They are just iterations on features, on the PHP 5.5 features that will be available and they are being tested to see if they pass as much as possible the tests. So the final version is not so buggy.
There were actually three release candidate versions already in the latest weeks. I think the release of PHP 5.5 is imminent. So whoever is anxious about PHP 5.5 may be very eager to see this release out and should pay attention to the next days. Probably by the time this Hangout is published, the PHP 5.5 is already released. Well, let's see.
Ernani, are you eager to see the PHP 5.5 release out?
Ernani Joppert: I don't use PHP 5.5. I don't have any practical need to have this updated. But it's nice to see that PHP is growing. They release things. It means that some frameworks or there are particular issues that may require users to update it.
Manuel Lemos: Yeah. Well, me neither. And I think, we sort of fit in the vast majority of the people that will wait for the official final version to come out to even consider testing.
Even though, they really want to use it, they would probably wait for the final version to be released and will not even bother with any beta or release candidate releases.
Well, it's always useful, at least for the core developers that are concerned with any bugs. At least you can help in testing these releases and eventually find any outstanding bugs, you report them before the final version is out.
There is always this appeal for people to collaborate, but what happens in practice as what we have always seen is that everybody tends to wait for the final version. And then, there is a great amount of bugs being reported because people finally start testing it for real.
JSON Incremental Decoding (6:37)
Manuel Lemos: OK, meanwhile, there is already people trying to propose new features for future PHP releases because, obviously, the PHP 5.5 version feature release is closed. I found an interesting proposal for an eventual PHP 5.6 release.
This one here that I'm showing is from Remi Collet and from the email address, he seems to be from the Fedora Project. Anyway, the actual proposal is basically attached to the JSON encoding and decoding functions.
Basically, the idea is to implement an incremental parser that will parse the JSON structures step by step in small chunks. I think this is to not exceed the PHP memory limits.
Ernani Joppert: Right. Another thing here which I see is that it has a benefit of converting integers has integers, never float or string. So I'll always parse an integers as integers and allowing also comments in JSON string file.
Manuel Lemos: Yeah. Well, that's interesting. Actually, I did not notice that.
Anyway, I think this is interesting but what is odd is that the guy sent this proposal to the internals mailing list and apparently, nobody replied. It seems either I have missed the follow-up discussion in a different thread or it simply did not raise here any interest. Well, this is a bit odd.
Ernani Joppert: Yeah.
Manuel Lemos: Well, the fact is that he did not submit RFC proposal. And probably when he does that, people will really, actually, start discussing it.
This is another odd attitude of core developers, I think, because sometimes, they bother to argue not so relevant topics a lot in the Mailing List, but in this case, did not follow up with any discussion.
Ernani Joppert: Right.
Manuel Lemos: Maybe I'm missing something here.
Overloading Arithmetic Operators for Arbitrary Precision Numbers (9:23)
Manuel Lemos: Well, anyway, now, moving on to another topic... I'm trying to find the correct page here... this time it's a proposal by Nikita Popov, regular core contributor.
He proposed an improvement for PHP which would consist in overloading the arithmetic operators for values that contain arbitrary precision math which is basically a representation for numbers that can have unlimited numbers of decimal digits. Usually, you use extensions of PHP, can be either BCMath or GMP.
And this proposal, it's basically to let you write instead of code like this that is hardly readable, this is basically how to implement an expression that consists of multiplications and additions. And there is also the mod operator here.
And instead of doing, representing it this way, it could be represented this way, like in regular integers and doubles that you use to express when you want to define more complicated operations.
And I was looking here, it seems very interesting that this proposal comes, because operator overloading seems to be more common in other languages.
Ernani, I think in Java, do you have operator overloading for arithmetic operations that involve different types of numbers represented with different classes?
Ernani Joppert: Yes, I haven't used it myself. The projects that I've been involved with, the most complex ones involved BigDecimal adoption.
But sure, I believe that in Java, there are libraries that to perform that. Mostly, what I've been using is big decimal and I haven't reached the need of having operator overloading. But I'm sure that there is.
Manuel Lemos: Well, what I mean is, for instance, you want to multiply to numbers that are in big decimal object, do use the asterisk as multiplication or do you have to call a method to do the actual multiplication?
Ernani Joppert: As far as I do recall, if you have two objects, since you are using objects, you have to call some method inside of the object. It's not just a simple...
Manuel Lemos: Oh, I see.
Ernani Joppert: Yeah.
Manuel Lemos: So, I think it's C++ that provides a more extensive operator overloading.
Ernani Joppert: Right.
Manuel Lemos: Because the code ends up becoming more readable than if you have to do the actual method calling to perform these operations.
And it is interesting that this is being proposed for PHP while from what you are telling me, Java does not have support for overloading.
But I think, for instance, one thing that I wonder if you can clarify, when you have two integer objects, not integer native values in Java, if you want to multiply them, do you use the asterisk or do you have to call some method?
Ernani Joppert: Integers, if you're talking integers, you have to work with the object. And you can pass two int values which are primitives and they will wrap it up. But the methods require each of the ints or integers. So it may have overloading methods but not an operator overloading.
Manuel Lemos: No, I mean, for instance, if you want to... Let me show the expression here.
Ernani Joppert: Imagine the situation that I have two int values. Because when you're coding, you're passing an integer and it's a dynamic value. Somebody sets the value before.
Manuel Lemos: Yes.
Ernani Joppert: So, and then you can't multiply, you just have to wrap it into primitives if you want to do it in code or sometimes you have to multiply by a specific method.
Manuel Lemos: Yeah, for instance, here. This is how it is done currently in PHP. So if you want to multiply this value by the rest of the expression, you have this code here.
Ernani Joppert: Right.
Manuel Lemos: that does the multiplication. So if these values are integers, you can just do this way.
Ernani Joppert: Right. That's not possible in Java. I mean, if you have two...
Out of the blue, my computer just mutes myself.
So yes, when you have two equal objects, you have to call a operation. You can sum, you can multiply, you can divide. But in the case of a code itself, like if you're stating 10 x 10, then they are considered int value. But if you want to perform operations with an integer, you have to wrap it in int values before you can multiply.
Manuel Lemos: Oh, it's really bureaucratic programming.
[Laughter]
Manuel Lemos: OK, I'm not surprised.
Ernani Joppert: Yeah, I don't have it on fresh on my mind, but I'm almost sure that you can. If you have integers, you may be able to do that, but I don't recall it. It's not fresh on my mind right now.
Manuel Lemos: Right. Well, I know Java tend to be bureaucratic but for simple operations I suspect that it's not that bad.
Ernani Joppert: No, no, no. It's not the worst case scenario.
Manuel Lemos: But I've had worse things...
[Laughter]
Manuel Lemos: ...in the Java world.
Ernani Joppert: Yeah.
PHP Support Google AppEngine Finally (16:17)
Manuel Lemos: Anyway, moving on with the next topic which is probably related with the languages. Last month Google announced that finally, after many years of people begging for them to support PHP in their cloud hosting platform AppEngine, they finally added support to PHP.
And well, personally, I did not expect this from them anymore because it has been five years since they launched this platform the AppEngine. The top number one feature request that they have in their feature tracking, bug tracking system was to support PHP. And they finally did it.
This was one of the surprises and they announced it in the Google I/O and it was very interesting. Not just because they started supporting PHP but because they justified it by saying that PHP has 75% of the market of Web sites.
They are saying that PHP uses 75% of the Web sites that they crawl. I think they mean the public websites, because I know they can't crawl sites that are in the intranets that are behind firewalls.
So, this is interesting. It's quite a revelation because we PHP developers were really not aware of how far PHP was leading or lagging because for the last years, I have been reading a lot people saying that PHP is dying and all this and that. And what we can see from this revelation from Google is that it's quite the opposite. PHP is more alive than ever.
Ernani, did you follow up this announcement? What were your impressions about this?
Ernani Joppert: Oh, yes, I was really happy. It was a discussion we've had back in the past that we wanted to see PHP in an AppEngine.
But I haven't had the time yet to check it out, the details. But it's for sure a huge milestone for Google. And I bet that the amount of adoption on their platform will substantially increase, given that we have WordPress applications, we have Magento, we have several other Open Source solutions that people implement everywhere. And benefiting from the Google architecture, it should be a great milestone for Google.
Manuel Lemos: Yes. It's interesting that you say it's a great milestone for Google, not a great milestone for PHP. Well, I quite agree that this was a more important announcement for Google than for PHP itself.
Ernani Joppert: I totally agree.
Manuel Lemos: Because, first, PHP developers are not exactly in a sort of competition. PHP is just a tool. It's a language, as I try to express in this article... languages are tools, not religions. You may have a favorite language but that does not mean that you still need to start campaigning against other languages, as we've seen lots of people that prefer other languages... Python, Ruby, Java, C#, whatever.
Because PHP is quite dominant at least on the Web, it seems they feel they are in the shadow of PHP and their favorite language never get the attention that they would like.
Well, anyway, this revelation was interesting. Many people were very happy with this revelation from the repurcussions that I noticed to this article.
And it is interesting also to notice that Google was quite discreet in announcing this support of PHP in AppEngine. They had a session on Google I/O. They just call it "A new language". They did not mention it was PHP. Either they did not want to reveal in anticipation to whoever is going to the event or they were sort of ashamed, "Now, now, we have to support PHP, the language that the cool guys do not like. They are always complaining about PHP."
Ernani Joppert: Again, people forget the whole objective here which is to reach your intentions, achieving what you want.
Manuel Lemos: Yeah.
Ernani Joppert: If somebody wants to have a decent e-commerce platform and they want it right away, why don't they use Magento, which is already done and they just have to customize.
Manuel Lemos: Right.
Ernani Joppert: And their businesses is right up running and they don't have to care about anything else, other than customizing their store. So in the sense of knowing what you want and knowing how to get what you want is the main situation here.
And it seems that developers are still willing to implement their knowledge, their development knowledge, and they want to be purist about something. But they forget the main objective, which is to establish a working business, which pays their views and pays their salaries.
And that's the main goal, other things come after. Which is design pattern, it's something nice to have, but it's not what will make your business work.
In the end, it doesn't matter how your application looks. If it is profitable and it achieves their goal, which is make customers happy and make more customers available, then you're succeeding. And of course, there will be time enough for beautifying your code or even changing your infrastructure such as Twitter did.
Manuel Lemos: Yeah.
Ernani Joppert: Twitter, I guess, began with Ruby. And they eventually changed to Java because Ruby couldn't scale to their needs.
Manuel Lemos: Yes. That's a good example of trying to be more mature. And I think that from the point that they start getting more investors influencing the destiny of the company, they had to follow the money.
Ernani Joppert: Right.
Manuel Lemos: Rather than follow their personal preferences. And I think it was good that you brought that example. Another example that I think that's totally odd, to not say stupid, I don't know if you are familiar with the cloud hosting platform named Heroku.
Ernani Joppert: Yes. Yes, I do.
Manuel Lemos: Well, they hide.
Ernani Joppert: I do know them.
Manuel Lemos: They support PHP but they hide it. And what? Why are you hiding your support to your largest market? Are you dumb?
Ernani Joppert: Yeah.
Manuel Lemos: Well, nothing personal. I don't even know the people that work on that company but they added support to PHP because they wanted to offer it to host Facebook applications.
Ernani Joppert: Right.
Manuel Lemos: Well, I don't know if Facebook applications have to be written in PHP. But OK, PHP is the most popular platform and Facebook offers SDK native to develop applications using PHP.
Ernani Joppert: Right.
Manuel Lemos: But they just support PHP and do not mention PHP at all. And why are you hiding from the market? Don't you want to make money?
Ernani Joppert: Yeah.
Manuel Lemos: What kind of institution do you run there? Isn't it a business company, like in making money company?
Ernani Joppert: Yeah. It's crazy. I mean, I know, I know about the reputation that PHP gets when compared to other languages. I don't know why. I just guess that this is a time frame situation. Since PHP came back in the past and it's sort of very old in the sense of timeline to be known as a language, as a Web development's platform and it gets that drama of being an old art.
I just see on mute here.
Manuel Lemos: No, sorry. I saw I lost you on video but I could listen to you.
Ernani Joppert: Technical issues. OK, no problem.
Yes, the only thing is that, I guess, just because PHP is older than those other languages, it has this kind of bad karma that people tries to figure it out. And PHP has been proven to be such a useful as Ruby on Rails because it has CakePHP which does exactly the same as Rails does.
Manuel Lemos: Yeah.
Ernani Joppert: And people just want to learn something new. And they believe that they already know PHP enough, so they want to move along. It's nice to know other languages when you're working as a developer but the best thing is to be knowledgeable on what pays your views are, what will benefit your business in the whole sense.
This is something that I have went on this topic on this specific post of yourself, which you mentioned Google adopting PHP. That proves that Google was wrong and it became to be right.
Manuel Lemos: Yeah. Well...
Ernani Joppert: They were losing market share for somebody else and they have...
Manuel Lemos: But at least they were not earning any market share with whatever the languages they...
Ernani Joppert: Yeah. But I would think...
Manuel Lemos: But it could be much smaller than it could be.
Ernani Joppert: I would say that it's not the case that they were losing market, that they were no having enough adopters in Python or Java, which were the other languages that they had support.
Manuel Lemos: Yeah.
Ernani Joppert: But I'm sure that they were losing market share on their infrastructure ability without supporting...
Manuel Lemos: I don't even know if AppEngine has a great market share, because...
Ernani Joppert: Yeah, that is kind of obscure and kind of out of topic on my explanation here. But the thing is, I'm sure that Google lost a lot of potential...
Manuel Lemos: Opportunities.
Ernani Joppert: Yeah, potential customer adoption, because they weren't able to support PHP. And now, that's gone and that's a huge milestone for Google and also for PHP.
Manuel Lemos: Yeah, well, I don't know what happens inside of Google but I think the board of directors of Google looked at their products and said, "This product either makes us money or it's out." Because Google has been cutting out a lot of products that were not making money and they are not strategic for anything.
Ernani Joppert: Yup.
Manuel Lemos: And I think it's time for AppEngine to make serious money.
And another detail that I mentioned in the article is that one of the lead developers of the AppEngine project in Google was Guido Van Rossum. He's the creator the Python.
Ernani Joppert: Right.
Manuel Lemos: So, I think it's natural for him to prefer to give priority to Python.
Ernani Joppert: Right.
Manuel Lemos: And I would not be surprised if he was the core person to object to support PHP in AppEngine. It's natural.
Ernani Joppert: Yeah.
Manuel Lemos: Because Python is his baby and he wants his baby to prevail, but...
Ernani Joppert: Yeah, but it's somewhat insane to have the decision of one single person or whoever the amount of people was kind of coveting with him on that decision, in the sense of trying to improve the amount of knowledge in Python for everybody and avoiding the adoption of PHP just because they could say no.
Manuel Lemos: Right. Well, I'm sure...
Ernani Joppert: Greed.
Manuel Lemos: That Python increased its visibility since Google announced that they used Python to develop whatever they did. I don't know what they've used Python for in Google, but they announced it.
But trying to avoid a market just because it's not the preferred language of one developer that happens to be the manager of the product.
Ernani Joppert: Yeah.
Manuel Lemos: I think you used the right word... insane.
Ernani Joppert: It's like if they would hire the creator of .NET which used to be the creator of Delphi. And they would say, "Now, you can't go .NET here, you're just using Java." And to say, "Why am I here then?"
[Laughter]
Manuel Lemos: Exactly. And I think this whole story of Google deciding to support PHP probably is... I don't know, I have no firsthand knowledge. It's just a supposition that for some reason, Guido Van Rossum left Google in December. He went to Dropbox. OK, Dropbox is a fine company. But...
Ernani Joppert: It's funny.
Manuel Lemos:.. why Google only supports PHP right after he left, probably one thing is tied to the other.
Ernani Joppert: Yeah, maybe he had a contract agreement.
Manuel Lemos: Probably.
Ernani Joppert: It was decided before the implementation of AppEngine. That could be. But it's only conspiration and we would be...
Manuel Lemos: Ah, it's not conspiration. It's just supposition. There is no...
Ernani Joppert: Yeah, but it's kind of conjecturing, right?
Manuel Lemos: Right.
Ernani Joppert: We don't have the proof.
Manuel Lemos: No, we're just guessing.
Ernani Joppert: Yeah, it's totally possible that when they hired Guido, they said "You will implement something." He said "Ok, I will do it in Python. That, I am OK, but I won't do it in any other language." And then, he eventually had to obliged to off another language. And then, he said, "Ok. then Java, but not PHP." Who knows?
Manuel Lemos: "No PHP. It's mean. It's ugly."
Ernani Joppert: Yeah. Who knows?
Manuel Lemos: Well, that's a plausible theory. We don't know if it's true. It's something that could happen.
Ernani Joppert: Something like it.
Manuel Lemos: It's inside Google. It's not a public thing, it's just a supposition.
Ernani Joppert: Yeah. I'm sure it was something. We just don't know what was it.
Manuel Lemos: Exactly. And, well, we don't know...
Ernani Joppert: Imagine this, if they would hire you to build inside Google a component repository where people would share their code. And they say, "Manuel, you have a decent sharing platform but you will have to do it in C++." Would you do it?
Manuel Lemos: No. I'll probably just manage the project rather than write the code.
Ernani Joppert: Because you are a sensible person and you know what is the definition of business.
Manuel Lemos: Right.
Ernani Joppert: If you would be like in your teenage or within your 20s or something, you would say, "No, the first repository would have to be PHP." Because you have an emotional involvement with your projects and ...
Manuel Lemos: I'm also not the creator of PHP which is quite a good difference between me and Guido Van Rossum.
Ernani Joppert: Yeah, but since I already gave an example and you have a PHP Classes repository which are PHP components and Google wants to build their own code repository.
Even though it was an internal solution for their own developers, not something meant to be public. You would say, "Ok, but I would only do it if it would be in PHP." And that could be your emotional involvement with PHP.
Manuel Lemos: Right.
Ernani Joppert: But in that case, it would be emotional involvement.
Manuel Lemos: Well, I think it's going to make more sense to ask Rasmus "Oh, develop this here but not in PHP. Are you kidding me?"
[Laughter]
Ernani Joppert: Maybe if it was C, then he would accept it. But who knows?
Manuel Lemos: Yeah. Well, anyway, this is an interesting episode and it had a lot of repercussion because, well, the PHP Classes site have a record audience in that day when I posted.
Ernani Joppert: Wow.
Manuel Lemos: Because people were very happy. I mean, PHP developers were very happy with this announcement. More of the fact that Google announced that PHP is implemented in 75% of the sites than the actual support of AppEngine, because AppEngine itself, it is as still a limited platform like many other cloud hosting platforms. They are not exactly the same as implementing PHP on a regular hosting platform. And it is interesting to notice that.
And, actually, I have even tried to enumerate some...
Ernani Joppert: Oh, by the way, I just wanted to make a small adjourn here, which is to clarify the question that you had just before about Java precision calculation. And I have found the snippet while we were talking about another subject and I just wanted to screenshare this, just before we move away from this topic.
Let me see here. I have sublime text here. Can you hear me? For some reason... Now it's OK.
So that is how you would, let's put it this way, multiply a decimal value which here is something like quantity and price.
Manuel Lemos: Oh, that's ugly.
[Laughter]
Ernani Joppert: But it does the job. But it's the syntax is not as small. But you see, it's all objects. And if you would have to make calculations here, you would probably convert it to primitive. Which is int double float et cetera.
Manuel Lemos: And if you have a pain in one finger and you want to stop the pain in that finger, you can cut off your arm and it will stop the pain in the finger. You lose your arm, but it's OK, it will stop.
[Laughter]
Manuel Lemos: Well, anyway, back to the topic that I was commenting before regarding the actual features.
OK, I was trying to find the actual window for screensharing again. Google made some changes to the Hangout platform now, we have to wonder a lot where everything is.
Ernani Joppert: Oh, yeah. It's just like Facebook. They released a new UI, just...
Manuel Lemos: Oh, they are pivoting.
Ernani Joppert: Yeah, for some reason, they want to have more UI.
Manuel Lemos: Yeah, they have watched one of those courses on Lean programming on Lean product development. "Oh no, you are pivoting!"
Ernani Joppert: No, they are iterating.
Manuel Lemos: Iterating.
[Laughter]
Manuel Lemos: Sometimes, it's pivoting because it's totally different, we get totally lost in how to find everything.
Ernani Joppert: Oh, yeah. Oh, yeah.
Manuel Lemos: Anyway, back to the topic here. I have mentioned some advantages of using PHP in this AppEngine as solution for hosting.
They have some advantages here that some are very interesting, like having virtually infinite scalability. You can just drop your application there and if you have demand for more servers, it will automatically will scale them. At least, that's the way I perceive it to work.
Ernani Joppert: Is there any possibilities for PHP Classes to be hosted in that particular infrastructure?
Manuel Lemos: Well, that will get me to their limitations. Let me get there so you can have the answer to that question.
Ernani Joppert: Yeah.
Manuel Lemos: There are other interesting features, like they have provided, I think, emulation for memcached servers. So you can have for instance sessions data of PHP be stored in memcached server and it gets stored in their... I don't what is the exact name they give in the AppEngine which would be...
Ernani Joppert: Big Data?
Manuel Lemos: No. Value...
Ernani Joppert: Key value pair?
Manuel Lemos: Key value pair storage. They probably have a different name, I forgot, for that. With that, you could have your sessions distributed. This is very important because if your application is hosted in a platform that is clustered, every different request may be served by a different server. So you could not use local files to store session data as used regularly in a single hosted environment.
Ernani Joppert: And you can't even pass PHP session ID on the URL because it's a huge issue.
Manuel Lemos: Yeah, well, I don't think that will make a difference. I'm not sure what you mean.
Ernani Joppert: No, I mean, you have to propagate the session throughout the whole cluster.
Manuel Lemos: Oh, I see. With URL.
Ernani Joppert: Yeah.
Manuel Lemos: Well, I don't think...
Ernani Joppert: Yeah, if you used the correct string.
Manuel Lemos: No, I don't think so because session IDs are passed with cookies. As long as the server has the same URL, even if it is a cluster. The same domain, the cookies are sent to different servers, whatever they are.
Ernani Joppert: Right. But on the file systems of those servers, it would have to be replicated somehow, right?
Manuel Lemos: Right. That's something that you cannot do anymore in this AppEngine environment which is to access local files. You have to store them in their...
Ernani Joppert: Somewhere else.
Manuel Lemos:... their cloud storage service.
Ernani Joppert: Right.
Manuel Lemos: Whatever is then the name.
Ernani Joppert: Right.
Manuel Lemos: They also support task queues which you probably would be able to implement with some other queue manager service but they have their own AppEngine.
And now, to the disadvantages, as I mentioned, there is no access to the local file system.
Ernani Joppert: Right. Because there isn't a file system, probably.
Manuel Lemos: Yes. Which would be a security problem if you could modify things like we do sometimes with scripts.
Ernani Joppert: Right.
Manuel Lemos: So for instance, if you have one of those template engines like Smarty that takes your template and compiles it and generates PHP, you cannot execute that PHP directly.
Ernani Joppert: Right.
Manuel Lemos: Because there are no local files. You could not do or require this local file or just generate it. So you have certain limitations. You could use their cloud storage to store files.
Ernani Joppert: I've seen some examples of libraries in Java for Google AppEngine that writes a file system inside of the proper, the cloud storage of Google.
Manuel Lemos: But that's what Google does for PHP. They have a new stream handler.
Ernani Joppert: Oh, I see.
Manuel Lemos: For instance, you want to access remote files in HTTP server, you put http:// the domain and so on, for the URL of the actual file you want to retrieve. And for their cloud services, they have added a built-in, a stream handler that you can access files.
Ernani Joppert: Instead of like "file:///", it's something like "googlecloud:///" or something?
Manuel Lemos: Yeah, they have a specific stream handler. It has a name. I forgot what is the exact name, but you just check the documentation.
Anyway, this is interesting because you can use the functions that you have in PHP to access files as fopen, as file_get_contents and...
Ernani Joppert: Oh, it's nice.
Manuel Lemos: The only thing you cannot do is to include a PHP script. So, you cannot execute a file that have just stored. You can do or require for a file that is on your project but you have previously uploaded it and then the system knows where the file is.
Ernani Joppert: oh, I see.
Manuel Lemos: It doesn't matter if it's in that cloud, it's abstracted, you don't have to be bothered with the actual path.
Ernani Joppert: But I see a lot of great ideas coming through from PHP Classes contributors here.
Manuel Lemos: Yeah.
Ernani Joppert: Maybe another abstraction class for local file system handling, with just a small configuration you would be able to change your Smarty template engine.
Manuel Lemos: Right.
Ernani Joppert: And be able to...
Manuel Lemos: Well, you're right. The solution that I proposed here is instead of using the required command, just to file_get_contents and then use eval.
Ernani Joppert: Oh, I see.
Manuel Lemos: To execute the actual codes. So it will work but we have to do that change.
And another thing that I mentioned is that for instance, applications that self-update like WordPress, when you have an upgrade, you can download the upgrade and install it. You cannot do with their traditional process of downloading the file, just executing the...
Ernani Joppert: Yeah, and one of the things I've seen in most cloud solutions is the lack of ability to store uploaded files. In the case of WordPress upgrade process, it's the file download where to store it.
Manuel Lemos: Yeah.
Ernani Joppert: Because, normally, they have a file system but it's just on a per...
Manuel Lemos: It's in their cloud.
Ernani Joppert: It's a virtual setting. If the machine goes down, it will lose the file system and everything with it.
Manuel Lemos: Well, this is all tied to their cloud systems, so your temporary downloaded files will be available from there.
Ernani Joppert: Oh, I see.
Manuel Lemos: And this is interesting because since that cloud storage system is distributed, it doesn't matter if it is being run on one specific server or another. So, that's the way to go with the scalability. So that should not be a problem.
What can be problems are the things like these that I mentioned here, like you can no longer access remote resources via sockets or Curl. You have to use file_get_contents and other functions to access remote resources, those resources. Because I think they want to control what you are accessing.
Ernani Joppert: Oh, I see.
Manuel Lemos: To the outside and they did not provide alternatives to the Curl.
Ernani Joppert: Both Google and NSA, right?
[Laughter]
Manuel Lemos: That would lead to another off topic discussion.
Ernani Joppert: Yeah. I just wanted to make that joke. I had to.
Manuel Lemos: Ah, yeah. You have been dying to plug that...
[Laughter]
Manuel Lemos: The whole story of the US government tapping on the communications.
Ernani Joppert: Yeah.
Manuel Lemos: And that would be a totally unrelated topic with PHP.
Ernani Joppert: Oh, yeah.
Manuel Lemos: Well, anyway, there are some limitations. There were some comments about workarounds, things that you do different but you can still do them.
So, to your question, whether we'd be able to run PHP classes or not, I think it would be possible to do it with lots of changes.
Ernani Joppert: Oh, I see.
Manuel Lemos: Nothing serious but would be a good amount of work to...
Ernani Joppert: And in the sense of business, you have more important things to do just to stop your current efforts on improving PHP Classes.
Manuel Lemos: Exactly.
Ernani Joppert: Than migrating it for the business. In the case of the business sense, it matters to you to improve PHP Classes rather than changing it to a nice architecture. Let's put it this way, that comes back to the whole dilemma of the best language and you don't get the sense of business development.
Manuel Lemos: And talking about that, there are other cloud hosting platforms that support PHP better with less limitations. So Google, all these five years that Google been delaying to support PHP, those time that was lost, support for PHP could be even better. But OK, they are a wealthy company now. They just hire more developers to run faster after that lost market.
Ernani Joppert: Yeah.
Manuel Lemos: Well, anyway...
Ernani Joppert: Let's look on this for the future. Let's see how it goes.
Manuel Lemos: Yes, I'm sure we'll get back to this later. The rest of the article were about what we have talked before about this whoever won the platform war.
Other than PHP... it was not just PHP... it was also my MySQL which AppEngine support as a wrapper. So you access, use the same functions of MySQL but it's not really MySQL. And I'm sure the underlying platform, although they did not disclose it, it's some flavor of Linux.
Ernani Joppert: Oh, yeah.
Manuel Lemos: Probably a custom one, Google Linux.
Ernani Joppert: Oh, yeah.
Manuel Lemos: Well, basically about this topic, it is very interesting. You could even say much more things but we need to move on.
And I just wanted to congratulate the PHP community as a whole because intentionally or not, the success of PHP is a result of lots of people collaborating in many forms. For instance, PHP Classes site is a result of a collaboration of many, many developers.
Just to talk about those that submit classes, it's now over 3,500 contributors. And there are many other people that contribute to the site indirectly and they are not even a part of those that also contribute classes. And the site is now reaching 1,200,000 registered users. Certainly, not all of those are active but those are all people that participated in this huge community.
Other than that, one key software that was very determinant to the success of PHP, certainly, I'm sure that it was WordPress... as I mentioned in the article. Although, I specifically have not used it on my projects, not because I don't like it, but because I developed totally my own software. I reckon that WordPress is very successful. ...
Ernani, I don't know if you have ever used WordPress in your projects?
Ernani Joppert: Yeah, I've helped several friends to implement WordPress. It's a no-brainer in the sense of having something working and it brings the business to life in such a quick time frame.
And I guess that if you would have to implement, if you would be beginning PHP Classes today, you would probably consider to use WordPress for some reason.
Manuel Lemos: Well, a lot of people starts site from blogs. That's a good reason to start with WordPress, although PHP Classes is not exactly a blog. Now it has a blog. It is built on its own platform.
Ernani Joppert: Right..
Manuel Lemos: But, probably, you are right, if we're starting the site now, it would be also built on Wordpress. Kudos to Matt Mullenweg for his brilliant project.
I know Matt. I met Matt personally in an event. He came here in Brazil a few years ago. He's a very nice person, very humble. And he has a very good sense of humor. He's a very pleasant person to talk.
I'm sure a lot of his way of being is in the WordPress project. The whole concept is be able to improve the platform with contributions done by others with famous WordPress plugins that constitute a very large ecosystem.
So kudos to him and the whole WordPress community for, probably without intention, to contribute, to the huge success that is PHP as a language.
Well, with that, now it's time to move on to another topic.
Ernani Joppert: Oh, yes. And I just want to make an observation here. I'm sure that Matt would never realize the amount of adoptions that WordPress has. But I'm sure he knew what he was doing and the potential it had. So kudos to him for the success that he had with it, but also to the efforts that he's probably putting to it to make it an extensible platform.
Even though purists would say that the code of WordPress is ugly and it's in PHP and blah, blah, blah, yada, yada, yada.
Manuel Lemos: Yeah. But it's even funny that some, even inside the PHP community, some of those that complain about "Oh, your coding style is ugly." This and that. But in the end, they have their own blogs on top of WordPress.
Ernani Joppert: Yeah. How about that?
Manuel Lemos: What do I say about that? Nothing. Just silly complaints.
Ernani Joppert: Just play the sad trombone.
Manuel Lemos: Why bother?
[Laughter]
10 Steps to properly do PHP Bug Tracking and Fixing as Fast as possible (53:58)
Manuel Lemos: Well, anyway, moving on with the next topic, because we need to rush this Hangout.
Ernani Joppert:Yeah.
Manuel Lemos: A very interesting topic, that we have decided but we need to move on. There is an article here that I wanted to talk about that was also published this month.
Let me screenshare it here. Hopefully, it's working. OK, let's increase the font.
Basically, it's an article that I decided to write, also in part because of this previous article on the AppEngine.
I mentioned something about tracking PHP error logs. Because no matter how much you try to test your code, you will always ship code that is buggy and you have to determine where your bugs are and fix them as soon as possible.
So this article is actually a part of the blog that is associated to a package that I had developed some years ago, named Log watcher.
And it is meant to monitor log files in general, not specifically PHP error log files. But you can configure PHP to log all errors at runtime to a file and use this class.
For instance, start here in a script from the cron, as a cron job, and it will take a look at a new log lines that are added to the error log and send them by email to your address. So you can realize there are some bugs that are causing some errors, some warnings that you should fix as soon as possible.
And throughout this article I gave sort of checklist, things that you should do to prevent or at least minimize the amount of bugs that are ship in production. And you have bugs, try to fix them some as soon as possible using this class, as I suggest here.
Basically, all these are things that I call defensive programming practices or what you can do to defend yourself from your own mistakes, mistakes that may cause bugs.
In this article, I gave a lot of information. The more experienced developers certainly are familiar with these practices, at least most of them.
And I am sure that many less experienced developers were not aware of these. And I hope they have learned and they have started putting these practices in use to make their projects more robust, better, more bug free and overall, improve the quality of their projects.
Ernani, I don't know if you have read this article in full. Did you follow any or at least a good part of these practices?
Ernani Joppert: Yes, I've read the article. I haven't had the opportunity to implement these specific components into the applications that I've been using because most of them are into development stage. But it's really a powerful solution.
Even though if you have restrictions under the deployment environment that you have, your applications set into shared environments normally have PHP limitations or safe mode restrictions.
Manuel Lemos: Yeah. Sometimes, you cannot even have access to error log files.
Ernani Joppert: Oh yeah, unfortunately.
Manuel Lemos: So, you probably are having errors and you don't know about them because the hosting company does not feel it is important for you to have access to error logs.
Ernani Joppert: And until they decide to be assistive to you, it's like insane and you're taking forever to be achieving a goal and I'm sure that has saved a lot of effort for other developers around the world.
Manuel Lemos: Well, I can only speak for myself that I lost count of how many times this... it's actually very simple class, just a few tens of lines, it just takes a look at very low file and it keeps track of the last line that you read and starts reading the file from there to see if there are new lines.
What it does is very simple but the effect, the benefit of using it has been amazing because I was able to track bugs that if I left them open for a long while, they could cause me enormous damage that would be very hard to undo.
Ernani Joppert: And since we are always knowledgeable on the Lean situation, there's always room for iteration. And the best way to iterate is to see your error logs. That it's the basic of software development.
Manuel Lemos: Not just iterate, but iterate as fast as possible.
Ernani Joppert: Oh yeah, for sure.
Manuel Lemos: Yeah.
Ernani Joppert: So the sooner you have the information, that something went wrong with your application and going to the roots of the error sometimes is the best way to identify what is causing it.
Manuel Lemos:Yeah.
Ernani Joppert: Because there are such... I was not aware... you can't really tell until you go to the error log and be aware of what is going on.
Manuel Lemos: Right. And this has been very useful and I hope other developers can also take a look. They do not have to specifically use this class, but at least whatever means at your disposition to monitor your errors.
And keep in mind that no matter how much... even if you use the so-called test driven development that you start for tests and all your code is tested from the beginning and you have 100% coverage of your code, that will not prevent bugs to creep in your system in production.
So there is not a developer that is too perfect to write a 100% perfect code that will make it 100% bug free.
Ernani Joppert: Yeah.
Manuel Lemos: So you can always benefit from this practice.
Ernani Joppert: Maybe Linus wouldn't need this.
[Laughter]
Now, Linus certainly does not need this, because he doesn't use PHP, I think.
Ernani Joppert: You know, I mean, somebody like Linus wouldn't require such efforts because he wouldn't maybe do kernel maps and be aware of configuration
Manuel Lemos: Yeah. Use something else.
Ernani Joppert: Yeah. But I've heard back in the past, just a curious issue here that the creator of the LaTeX scripting language which generates decent ghost scripts file have never produced a bug before. And just out of curiosity...
Manuel Lemos: Yeah, right. You believe that, right?
Ernani Joppert: No.
[Laughter]
Ernani Joppert: Just the case of trying to be as perfect as he was. I guess it's something that you have to pretty much know what you're doing just before writing the line. Because then, it's just typewriting...
Manuel Lemos: Right. I think... Well, if God exists I think God also write code with bugs.
Ernani Joppert: Oh yeah, for sure.
Manuel Lemos: OK.
JavaScript Innovation Award Winners of March 2013 (1:02:09)
Manuel Lemos: Well, on that note, I would like really to move on because we are practically reaching the end of the Hangout. And as always, we have a couple of regular sections on this Hangout which relates to the Innovation Award Initiatives that go on every month, both the JS Classes site and the PHP Classes site.
And we always try to mention at least some of the packages we found more interesting. We don't have time to mention all of them.
Well, starting from the winners of March in the JS Classes JavaScript Innovation Award. They were voted in April and results came out in May. Now, in June, we are going to comment about a couple of them now.
Which classes do you think are more worth mentioning, Ernani?
Ernani Joppert: Oh, yes. Beginning from JS Classes which we always do to show that we have a sister Web site or a brother Web site... which I'm not sure the gender of it... but it's a very nice platform for JavaScript components.
And I've seen lots of innovation coming through it. So if you're also willing to contribute on the JS Classes site, go ahead. We have the Innovation Award going for already, I guess, three months in a row.
Manuel Lemos: Yeah.
Ernani Joppert: So it's nice to see that the same applicability from PHP Classes which had been proven successful a long time ago is now implemented on the JS Classes site.
Manuel Lemos: Right.
Ernani Joppert: And maybe you're wondering why I had the blank page here but it's just I switched from the screensharing I had.
Manuel Lemos: Oh, you are.
Ernani Joppert: I want to mention any blank component. So my vote goes to I guess Bob, which is a sort of a general name here. But he's from Bulgaria, so maybe he has a different accent in Bulgarian which I'm unable to reproduce. But congrats to him, he had created an object which can convert speed between kilometers and miles per hour and knots.
Manuel Lemos: Yeah. It's a very simple object but it's interesting.
Ernani Joppert: Yeah. It's worth mentioning, given that we have both PHP Classes and JS Classes accept innovation. It doesn't matter the way we implemented the code, it's the idea.
And sometimes, people just want a simple solution and they don't have time to implement themselves. Why not contribute and be quick enough to have your business going on? Imagine you're building a navigation website and you just want to calculate easily the conversion rates between those units' measures. So there goes my vote for him. So kudos to Bob from Bulgaria.
Manuel Lemos: Yeah. So other than that, which other class do you think is worth mentioning from this?
Ernani Joppert: Another one from Raul Molnar from Romania. And I guess that he has something that arranges with our native language which is Portuguese, as far as I understood.
Manuel Lemos: Yeah. Romanian is a language that is also derived from Latin, like Portuguese and Spanish and Italian and French.
Ernani Joppert: But I guess from the Latin languages, Romania and Portuguese are really, really similar in particularities...
Manuel Lemos: Yeah.
Ernani Joppert: So, but that's not the reason of my vote. The reason of my vote is just to see that people are using "OK, that's yet another jQuery plugin." But again, this is supposed to be useful. And if you need a component that provides...
Hello, can you hear me?
Manuel Lemos: Yeah.
Ernani Joppert: Ok, OK, something went mute in here and I was just wondering what was going on.
Yeah, so, if you're looking for a jQuery plugin which does convert an image to grayscale... for some reason you want to show something in grayscale, just an effect... I guess you can go ahead and find it right here. And kudos to him, to Raul Molnar from Romania.
Manuel Lemos: OK, well, on my part, I also want to comment on a couple of classes, starting from this one, Fallout 3 Terminal Access. Yet another great contribution from Arturs Sosins of Latvia.
This one is quite creative and I actually was not familiar with Fallout 3, which is a game that you have to go some certain rooms.
I'm not totally familiar with the environment but from what I understood, you can hack into terminals that are up here in the game and you need to break in by guessing the passwords. And you try some passwords, it tells you which letters may be right.
What he did is to develop a JavaScript component that you keep feeding it letters that you enter and which ones were correct. And it tries to guess the completely correct password in just three attempts. Because the game was developed not to be difficult but you figure somehow to break in those terminals and get some information from what I could realize.
So it is very unusual component and kudos to Arturs once again with yet another great component. So far he has sent 45 packages which is a lot. I hope he continues to send even more great components.
And now, other than that, I also want to mention another component, this time from Javier Camelis from Argentina. He has developed a certainluy unusual component which lets you store and retrieve multiple values in JavaScript arrays with a single command.
So if you want to assign multiple values in an array with a single line, you can just assign it, assign those values... I mean arrays... with key names. So you can assign them all at once.
I think, in PHP, you can do that with only four initialization. You can initialize an array with multiple values but you cannot change specific values of arrays in... I mean, more than one value at once. And it is a different component and kudos to Javier for his contribution.
PHP Innovation Award Winners of March 2013 (1:09:49)
Manuel Lemos: Now, we move on to the final section which this time we comment to the Innovation Award winners.
Ernani Joppert: Right, from PHP Classes.
Manuel Lemos: Yeah. So there were six nominees in March from all of you. We don't have time unfortunately to comment on all of them. Let's pick a couple of them each of us and comment a bit about them.
Ernani Joppert: Right. I picked two components. I will go quickly on this because it's an API implementation and that just proves to be the future. OK, it's using a SOAP request to the DHL API Web servers to submit documentation of shipments that requires customs clearance.
So, again, if you're implementing something and you need the wrapper of the API in PHP, there you go. You can find it here.
Manuel Lemos: Yeah.
Ernani Joppert: That's the benefit of making an API after all and having a perfect API.
Manuel Lemos: Yeah, but in this case, it's not any API. It's a new API that... DHL already had API for that but it's for their...
Ernani Joppert: Yeah, no, no, no. I mean...
Manuel Lemos: Paperless electronic documentation submission system.
Ernani Joppert: Yeah, the point is, if somebody has an API, it's possible that somebody can write an API implementation. And, then, there you go, you see the API implementation here.
Manuel Lemos: Right.
Ernani Joppert: The future, I guess, for Web development is for every business owner to have their own public API. And having those already here just proves to be useful, even though you're not using a feature of PHP site but you are willing to understand the API. And normally, the practical use of the API already gives you the benefit of learning it by yourself.
And sometimes, the API implementation is even more richer than the documentation itself, because the developer have already had the effort to go and dig in to the documentation and do whatever he has to do.
And the owner is Mubashir Ali from Pakistan. So kudos to him.
Manuel Lemos: Right.
Ernani Joppert: And the other one is a component which bring to my eyes what I've seen. It's a very nice idea to be able to implement this. And Google Cloud Messaging is a sort of a public subscription service that Web application can benefit from. And your mobile application can benefit from. Sorry, I've said Web application but I meant mobile application.
So, basically, it does send HTTP requests to the Google Cloud Messaging Web services API. And then, to get back information from Google, Google will send the message to that implementation and then it will basically be displayed within your mobile application. And seeing this implementation done in PHP is such a good effort.
Manuel Lemos: Yeah, because it was I think Google provided an implementation in Java right?
Ernani Joppert: Yes.
Manuel Lemos: Not in PHP.
Ernani Joppert: Oh, yes.
Manuel Lemos: Google doesn't like PHP.
[Laughter]
Ernani Joppert: Oh, yeah.
[Laughter]
Ernani Joppert: Great.
Manuel Lemos: No, just kidding. Now, they like. They like.
Ernani Joppert: Yeah, yeah.
Manuel Lemos: They are a bit of, but... I did. But OK.
Ernani Joppert: So Christiaan Baartse came already here from Netherlands and already had the efforts to implement this port for us. And it's nice to see that goes... I would say that this is hard to compare to other contributions. I would vote for year contribution but I don't want to be mad
Manuel Lemos: I bet no. That's no year...
Ernani Joppert: Yeah, but if it...
Manuel Lemos: In terms of classes, just in terms of authors.
Ernani Joppert: Yeah, but if I would... If there would be a year component, I would probably vote for this.
Manuel Lemos: Right.
Ernani Joppert: And that goes just the challenge for other contributors for the future to try to succeed this one. Because this is a very creative solution.
Manuel Lemos: Let's create a special prize here "Ernani Award of the Year"
Ernani Joppert: OK.
[Laughter]
Ernani Joppert: There you go.
Manuel Lemos: Well, anyway, talking about this one, from what I understood the Cloud Messaging Services, it pushes messages to it deliver to devices that are using mobile applications, right? Since when you want to send messages, the mobile device may not be online, you will not be able to see it directly.
So from what I understood, and tell me if I'm wrong, at least this Cloud Messaging Server, just drops messages in a queue and the mobile application pulls it to whenever it is online, right?
Ernani Joppert: Yes. Exactly.
Manuel Lemos: And this is just for Android applications, right?
Ernani Joppert: Yes, yes. It's delivered for Android.
Manuel Lemos: : Yeah, well...
Ernani Joppert: Maybe it could be used in an iOS application, if you probably want to unify it.
Manuel Lemos: Yeah.
Ernani Joppert: But then, it would probably have to implement a GCM implementation for iOS. Or probably, there is already a component somewhere else.
Manuel Lemos: Because it's interesting because this platform is free, right?
Ernani Joppert: Yeah.
Manuel Lemos: To use it for applications. Do you think it will be free forever or just maybe Google is giving it away for now.
Ernani Joppert: No, I would say it would be free forever because...
Manuel Lemos: Or maybe if you have a volume of messages you would probably need to start paying.
Ernani Joppert: Yeah, I would say that goes against probably the power of Android...
Manuel Lemos: I don't know about that.
Ernani Joppert: In order to provide regional notifications.
Manuel Lemos: Because this service cost money Google to provide.
Ernani Joppert: And I'm not even sure if it's not entirely free because I haven't had the opportunity to implement this so much.
Manuel Lemos: Oh, that was just a curious detail, not a...
Ernani Joppert: But I'd say if something gets paid just to deliver notifications, then it would go against the idea of providing a decent mobile framework.
Manuel Lemos: But you don't know, maybe they need to start making money from it because...
Ernani Joppert: Yeah, I'd say Android has other potential...
Manuel Lemos: Yes, they have other sources of revenue.
Ernani Joppert: Yeah.
Manuel Lemos: OK, moving on, I would also like to mention a couple of classes. I'll start here by one class. This is curious because it is component for use with the same framework. Since I do not use the same framework, I have nothing against Zend framework, as I have mentioned, I have developed all my software packages, so I'm not using a separate framework. But for those that use same framework, this maybe interesting.
This is a package by Yasir Siddiqui from Pakistan. He has already submitted several innovative packages and he continues to submit more, I know in the following months there are few others that he developed. So it is very good that he submits innovative packages.
But the reason why this one is nominated is because it tries to make the creation of forms in Zend framework much less complicated than it is. And this is interesting because while frameworks aim to simplify the application development, I looked at the code that this package generates and it's really complicated. I have no idea that building forms with Zend framework could be that complicated. It seem they are trying to apply too many design patterns than they need.
And it seems this package to generate a code to simplify the development of forms was really needed because things could be really complicated. And it's a bit ironic that framework that aims to simplify ends up complicating.
Ernani Joppert: But when you add the model-view-controller, you may have needs to attach a controller to a view. And sometimes, when you are delivering those data-aware components, you probably would require more complex approach. And probably that...
Manuel Lemos: Yeah, but this is meant to use with their MVC approach.
Ernani Joppert: Yeah.
Manuel Lemos: This is not to generate stand-alone forms.
Ernani Joppert: No, no, no. Right. But that's probably data-aware of some kind.
Manuel Lemos: Right. But even in that sense, you have to include the definition of the actual fields. This is mostly for that, to just define the fields or the form.
Ernani Joppert: Well...
Manuel Lemos: And well, I was a bit surprised because I have to analyze what the packages do. All the packages that are approved in PHP Classes site, I have to review the actual code. Even if sometimes, I do not actually run the code, I look at what it does.
And this is just a side comment that I wanted to make, because sometimes framework developers are not heading in the direction. The right direction is to simplify, not to make it more complex.
Well, anyway, there are different versions of the Zend framework. I don't know if this is for the Zend framework 1 or 2 and probably more recent versions are less complicated. If they are not less complicated, well, here is a tip for them... Zend framework developers to rethink their approaches and make things less complicated so generated components like this would have not been necessary.
Ernani Joppert: Oh, yeah.
Manuel Lemos: Well, anyway, the other component that I would like to mention is quite a simple one in concept but it's unusual. It's a package from Alessandro Vernassa. He developed a package to generate DXF files which is a format used by AutoCAD to define objects.
This one for now is quite simple, just lets you add a few types of 2D shapes to a drawing and then, it generates the DXF file and exports it for download or just returns it as a string.
So kudos for Alessandro for his packages. He has already submitted three innovative packages and now he continues to contribute more.
Conclusion (1:21:24)
Manuel Lemos: And with this, we practically ended this podcast. We have discussed a lot during a longer time than usual about many interesting PHP topics.
And with this, on my part, that is all for now.
Ernani Joppert: Yes, guys, thanks a lot. It was a great episode. I'm looking forward to see the adoption of AppEngine architecture as well as sending creative components for both JS Classes and PHP Classes.
Manuel Lemos: Yeah.
Ernani Joppert: And have a great month.
Manuel Lemos: Bye.
Ernani Joppert: Bye-bye.
You need to be a registered user or login to post a comment
1,616,842 PHP developers registered to the PHP Classes site.
Be One of Us!
Login Immediately with your account on:
Comments:
No comments were submitted yet.