PHP Classes

PHP Innovation Award Winner of 2012 - Lately in PHP podcast episode 33

Recommend this page to a friend!
  Blog PHP Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog PHP Innovation Award ...   Post a comment Post a comment   See comments See comments (1)   Trackbacks (0)  

Author:

Viewers: 13

Last month viewers: 4

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

The PHP Programming Innovation Award Winner of 2012 was announced. An interview with the winner, Karl Holz from Canada, was one of the main topics of the episode 33 of the Lately in PHP podcast conducted by Manuel Lemos and Ernani Joppert.

They also discussed the usual batch of PHP topics of interest like Zend Optimizer+ source code that was released, the PHP 5.5 feature freeze and roadmap, as well an article that compares PHP to an Hobbit, as well other languages to Lord Of The Rings story characters.

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




Loaded Article


Contents

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

Watch the podcast video, subscribe to the podcast YouTube channel

Read the podcast transcript


Click on the Play button to listen now.


Download Size: 31MB Listeners: 2387

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

View Podcast in iTunes

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

Introduction (0:20)

Interview with Karl Holz the Winner of the 2012 PHP Programming Innovation Award (1:08)

Zend Optimizer+ source code released (31:18)

PHP 5.5 Roadmap and Feature Freeze (37:20)

Is PHP a Hobbit? (40:06)

Latest JavaScript Objects released in the JS Classes site (47:42)

PHP Programming Innovation Award Winners of December 2012 (53:21)

Conclusion (1:04:37)

Introduction (0:20)

[Music]

Manuel Lemos: Hello, welcome to the Lately in PHP podcast. This is episode 33, and this month will be a special episode because we have a special guest. 

But, first, let me invite my co-host. He's screen sharing right now. Hello, Ernani, how are you doing? 

Ernani Joppert: I'm doing great. Hello, guys. I'm having some difficulties with the tool here. 

Manuel Lemos: You may want to stop the screen sharing.

Ernani Joppert: Oh, yeah. Yeah, I'm back. 

Manuel Lemos: [Chuckles]

Hello, Ernani. 

Ernani Joppert: I'm glad to be here. I'm glad that we have invited here somebody that contributed very well to the PHP Classes web site. And I'm glad to be here to participate on this.

Interview with Karl Holz the Winner of the 2012 PHP Programming Innovation Award (1:08)

Manuel Lemos: OK, so, now for our guest, Karl Holz, the top contributor of the year 2012, the developer that has submitted more innovative classes this year.

Hello, Karl. How are you doing? 

Karl Holz: I'm great. How are you doing, Manuel?  

Manuel Lemos: Over here, it's a bit warm. And looking at you, I suppose it should be cold over there.

Karl Holz: Oh, it's cold. It's still raining, a little bit of snow. You know, Canada. 

Manuel Lemos: Yeah, in Canada. Well, I also have a  brother in Canada and he happens to work with collecting ice during the winter. It's not a very good profession.

[Chuckles]

Karl Holz: No, I prefer working inside. 

Manuel Lemos: Yeah, good for you. 

Well, the reason why you are here, as I have mentioned, you were the winner of the 2012 edition of the PHP Programming Innovation Award. 

Just a brief review about what this award is... basically, it's an initiative that was started in PHPClasses site in 2004. And the goal is to encourage developers to submit more innovative classes as opposed to classes for the same purposes as many authors have been doing. And so far, it has been great, almost 1,000 innovative classes had been sent. 

And since a few years ago, we have this annual edition that takes in account some points that each nominee during the year accumulates. And in the end, the winner of the year is one that gets more points throughout the year. And this time, it was Karl Holz. Congratulations, Karl, once again. 

And for those that are not aware, you have won a... Oh, well, it's a symbolic prize. It's an elePHPant mascot.

Karl Holz: Oh.

[Laughter]

Manuel Lemos: And fortunately, this year, it arrives sooner. The post office excelled against my expectations and you were able to receive it in time for this recording. 

But well, I would like to just do a basic interview with you so our listeners get to know you better, about your work. First, I would like you to start and talk a bit  about yourself... what you do, where do you work, and your involvement with PHP in general. 

Karl Holz: Well, my day job is I work as a rigger and AV technician, so I do audio-visual and rigging in hotels for an audio-visual company called PSAV. I also work for another staging company as well at a convention center.  That's primarily what I do for my living. But PHP has been a hobby of mine.

Manuel Lemos: Oh, really?

Karl Holz: Like I get into code. 

[Chuckles]

I don't get paid to do PHP. It's just something I learned in school and I kept going. 

Manuel Lemos: Well, that has been great so far because you submitted several interesting innovative classes. That's why you got nominated several times. I was wondering if somehow this award influenced your career, winning the prizes has helped somehow on that sense. Or maybe not?

Karl Holz: Actually, today, I got called. Someone saw my profile today and called me for a job. 

Manuel Lemos: Oh, that's great. 

Karl Holz: But I have sent my resume. I haven't actually started having an interview yet. But I was surprised. This first class I contributed to you guys, I was surprised I got nominated for it, because I didn't expect it. I did it in two days... the Image Embedder.

Manuel Lemos: Well, being innovative maybe doesn't take too much time to actually do it. The rules of the Award are very simple, you just have to submit something that is innovative, compared to everything else that is in the site. And that's it.

All nominations are due. I mean, I would never nominate somebody who did not submit a package that is innovative. So, I'm glad that you were somehow surprised with it but it was deserved. 

Karl Holz: Oh, thank you. 

Manuel Lemos: OK. But... 

Karl Holz: It encouraged me to make something more interesting, you know.

Manuel Lemos: Yeah, yeah. In the future, we also will have some new developments that hopefully will make it even more fun to participate in this community. 

But, carrying on with this interview, maybe you could give a brief overview of the packages that you submitted.

Probably, you can screen share. I don't know if you are familiar with screen sharing. You just open a window with your classes in your browser. And then, there's a button on  the left of the hangout window to share your window. You can just talk a bit briefly about each one. 

Karl Holz: Just pulling up the screen sharing. 

Manuel Lemos: Usually, just select a window, so only that window will appear. Or maybe if you have a...

Karl Holz: Well, I got more than one display. 

[Chuckles] 

So I'm trying to figure which...

Manuel Lemos: [Chuckles]

That's an additional challenge. 

Karl Holz: It can be, yeah. Here we go. So, there it is. 

Manuel Lemos: OK. 

Karl Holz: This will start at what's at top, all right?

Manuel Lemos: OK. 

Karl Holz: CSS One was basically... 

Manuel Lemos: Sorry, can you increase the font a little bit? Right, that's it. OK, go ahead. 

Karl Holz: OK. So CSS One is basically, I just combined a bunch of stylesheets and minified them.

I also embedded my images into the style sheet as well. So, you have one single output. So, this was ideal for the jQuery UI which is what I used for my demo, because it demonstrate how you can use jQuery UI and put it on a new file. 

Manuel Lemos: Right. 

Karl Holz: With this CSS. That was basically, my idea was just to cut down and to keep everything within one path or user interface for each. 

Manuel Lemos: It uses the data URLs for the image, right? That is embedded in the CSS. 

Karl Holz: Yeah, exactly. 

Gig Cable was basically my attempt at creating a RESTful application, jQuery and PHP. Basically what that did was allowed me to... basically generated images that use the resistor code for all the numeric values and I had a bar code.

So that QRcode could have been a Vcard, a telephone number, an email address or GET text message. Not text message but you know, like a note. That was pretty interesting. It took me a... I spent a pretty good amount of time on that. It also had English and French translation. 

Image Embedder, that class was the first one I submitted to you, guys. Basically, it was a command line tool that read HTML file or place all the images, image links, with the data URLs. And it also judges the size of the images itself before it embedded them, so file wouldn't get too big. 

Manuel Lemos: Yeah. 

Karl Holz: Protect Image, well, I didn't get an award for that. It just put a watermark on there, on images.   

Proto Rewired basically fixes Adobe Proto. So Adobe Proto on the iPad would make HTML wireframes and it emails zip file to yourself.  The problem with that was the HTML was malformed, so this is just a way of fixing that. I was not aware or...

ProxyCast is basically a part of my SalamCast player and what that does is it downloads the podcast and provides adjacent document while the podcast are cached. So that you could quickly include them with your page.

Manuel Lemos: Oh, yeah. 

Karl Holz: Salat Reminder, that class is typically a web service so I can find out my times of prayer. Since as a Muslim, I have to pray a few times a day. Or I don't have to but I need to, it's more of a need. So, it's just a way of finding out my times for when... Because every location, it's different, base on the location of the sun. If I can't see the sun, at least, this way, I can figure the times for prayer. Like when I'm stuck in the office or if I don't have my phone with me. 

WebMap is a web interface to nmap Security Tool. Basically, it's just add XHTML interface to that. And you could just basically post information to the Web server and then, it reprints the logs of the Web page. 

And that's it. 

Manuel Lemos: Right. Well, actually, you mentioned that you are a muslim. So, there are specific times for praying. I was not aware until, actually, another Muslim developer before you published also a class that does something somewhat different but I think it addresses some need. I think there is some requirement to praying in certain direction also, right? 

Karl Holz: Yeah. You pray towards Mecca. So for where I'm at, that's northeast, because the earth is not flat. It's circular.

Manuel Lemos: Right. 

Karl Holz: So you have to find a shortcut. I used to have a calculator for that in my phone so I have a way of figuring out the proper direction.

Manuel Lemos: So, you also developed some more other classes that somehow helped you to participate in those religion requirements. So, I'm not sure if requirement is the right word...

Karl Holz: I created it as a tool for other people to use as well. It's more of "I'm using someone else's Web service" And to be honest with you, I wasn't really using it for myself because I have a program in my phone. I saw a brother class from I think the brother was in Syria. 

Manuel Lemos: Yeah.

Karl Holz: Basically, I looked at it. I looked at it and I was like, wow, I'm not going to look at every single country's geo-location. So I came up with another solution to look up, use IP address on geo-location. 

Manuel Lemos: Oh, right. 

Ernani Joppert: That's a brilliant idea. 

Karl Holz: So that's how I was able to look up the proper times. 

Manuel Lemos: So did you get good acceptance among that community of Muslims? 

Karl Holz: To be honest with you, not really. Because nobody explained it right to some of them. Like some of the people, brothers that I know aren't really tech savvy. So I guess, it didn't... I don't know. [Chuckles] I told people about it but I guess they didn't get as much as I was hoping. But I got an award for it. 

Manuel Lemos: Yeah. Well, from what I could figure...

Karl Holz: And someone contacted me on the web site about it. And he was like, he wasn't from Canada. But people I talked to locally, I didn't get any. 

Manuel Lemos: But I meant, from the Muslim community in general, not just from your country, did you get any interest from that community? 

Karl Holz: I have one person contact me. He was from Malaysia. 

Manuel Lemos: Oh yeah, a lot over there. 

Karl Holz: He was actually surprised. He's like, "Oh, you're Muslim. I didn't know your Muslim." 

Manuel Lemos: Well, I don't think there's a specific requirement to be in a specific religion. 

Ernani Joppert: Yeah. 

Manuel Lemos: Well, OK, I'm glad that it has been helpful because this is a universal site. There is no restrictions of religion, of origin to anybody.

Actually, I try as much as possible to give evidence that people are from different countries. Because once I show that everybody can participate in a positive way, regardless wherever you are and eventually whatever religion you have, you can always  share something that is useful and appreciated by everybody else. So it is interesting to know what is the kind of feedback you have been getting.

Well, anyway, the next question I have is about something that I always ask every winner every year. Since you won, it means that you probably tried harder than others that did not win.

So I was wondering if, at least since a certain point, did you try to focus specifically to be more innovative and eventually win this award? Or was it accidental?

Karl Holz: Well, some of the ones I tried, like the Proto Rewired. I was hoping to get an award for that but that was the one I didn't get an award. Some of it, like I said, the first one I submitted, I got an award for it. I didn't expect it. So, I guess, it's more based on chance. 

Manuel Lemos: Yeah.

Karl Holz: It must be very good. 

Manuel Lemos: I'm sure there are all these people that will try to win the award and some have their tactics. As I've asked them from previous years, so I was wondering if you would have any tactics that you would like to share and recommend to other developers so they'll try and eventually win. 

Karl Holz: What I can say, well, keep it simple.That's what I did. I notice that some of the things I was using was similar to the classes I used like the format for all my configurations.

I incorporate XSLT into my classes because I have better, fairly good understanding of that. Like I use  Oxygen XMLs in one of my IDEs so I create XSLT with that to parse XML. Because some of the stuff I was doing was XML-based, but there are RSS feeds and so on. 

Manuel Lemos: Oh, yeah. 

Karl Holz: While XHTML is also parsed now XSLT.

Ernani Joppert: And it's quite fast to produce results with XSLT, right? 

Karl Holz: Yeah. With the Oxygen XML, it's really, really easy. It's verbose but it does a lot of call completion so that's why I always like using it. 

Manuel Lemos: Yeah.

Ernani Joppert: OK. That's very great, very nice. 

Manuel Lemos: Well, OK. Now, I wonder if you could comment a bit about other nominees or winners throughout 2012. Any other classes of other authors that were more  impressed from those that were nominated in 2012?

I'm trying to screen share the winners of the year. Who else? There are quite a lot, like probably over 100 nominated classes. But I wonder if you remember any class that you were more impressed from those that were published in 2012. 

Karl Holz: I'm impressed... other than my own? 

[Laughter]

Manuel Lemos: [Laughter]

Ernani Joppert: [Laughter]

Karl Holz: Let's see. 

Ernani Joppert: Not coming out, right?

Karl Holz: Yeah, exactly. 

Manuel Lemos: Maybe other than the Canadians. 

[Laughter]

Karl Holz: This one by Tom Schaefer look interesting. The MySQL Workbench Schema Converter. Didn't actually looked at it too much, but that's the one that caught my eye, because it was the kind of stuff I like. The idea of trying to kill two birds in one stone. You know, you create, like from the screenshot, you just create an application and convert it into PHP code. 

Manuel Lemos: I think it manipulates a format that is in XML, right? 

Karl Holz: I'm not sure what the format is. It probably is in XML format. 

Manuel Lemos: Yeah.

Karl Holz:  I have one of those over MySQL workbench but these are... Yeah, that's pretty easy. I use it myself to connect to my MySQL service, easier than u sing a command line. 

Manuel Lemos: Yeah.

Ernani Joppert: Right. 

Manuel Lemos: That one from Tom Schaefer that you mentioned, actually, Tom has been submitting a large amount of great classes and I hope he continues to do so. 

Karl Holz: He's also using XSLT.

Manuel Lemos: Yeah.

Ernani Joppert: Yeah. 

Manuel Lemos: Basically, it simplified the format to make it easy to manage and extract information from there. Well, other than that, any other class?

Karl Holz: Let me see. 

Manuel Lemos: If you remember anyone because there are so many that were nominated. 

Karl Holz: I'm taking a quick look here. 

Manuel Lemos: While you review some of those that you may remember or not, one that I found very impressive is this Haar PHP.

It's basically to detect features on images, like faces and mouths and it  has a very unusual purpose. It basically did implement an algorithm to detect the shapes and features and probably can be used for those effects on Google Hangouts that detect where the position of a face and try to apply something.

Karl Holz: It tries to identify it. 

Manuel Lemos: Yeah. Well, any other one that you remember that could be interesting to comment? 

Karl Holz: I saw something. Print Form PDF looks interesting by Alex Selifonov . Sorry, I can't pronounce that. Sorry, everybody. 

Manuel Lemos: This Print Form PDF? 

Karl Holz: Yeah, Print Form PDF from PDF templates. Hold on.  

Manuel Lemos: Yeah, this is also useful because it parses some PDF documents to templates and inserts some texts and other things that you can insert in the document.

Karl Holz: Watermarking. Looks very interesting. 

Manuel Lemos: OK, well, this is very interesting. 

Ernani Joppert: Yeah, another point that I would like to see within last year is the growth of API client and/or API facilities.

That means most of the web sites have services that are cited in the Internet because of the mobility growth, they always try to simplify by providing a API so you can consume it or use this as a feature within your web site. 

And I've seen such classes PasteBin API and lots of other API components that I can't recall exactly right now. But I like to see people putting their effort on this because it has proven that there are services still that requires some  work to be done.

And Facebook has been one of the most known API provider that changes things and doesn't document them or at least notify their developers. So they break their code easily. 

And I've been using PHP Classes and those components to understand it easier because when you see a coded work, it's easier to understand at least for somebody who code. 

Manuel Lemos: Right. 

Ernani Joppert: You know, it's kind of a programmer's documentation. And it's nice to see that people are switching efforts into this as well.

Manuel Lemos: Right. It's true there have been many packages that makes it easy to access certain APIs. Unfortunately, we don't have much time to comment on much more of those. 

Karl Holz: Like the OAuth API, your OAuth class.

Manuel Lemos: Oh, yeah. That is a time saver because OAuth protocol is terrible. I mean, the implementations are very inconsistent. Each one of them has differences.

And well, I developed just to make it easier for people to log in with their accounts on Facebook or Google and other sites.

I notice there were differences between them and the ones you provide, single API that abstracts those differences, people become much more productive and do not waste their times trying to figure why certain API's different from the other, which is terrible.

It's great that you mention it because I see practically every week, there are new people complaining, "Oh, I want to access this API but I'm not able to do it with the OAuth libraries that they provide."

Ernani Joppert: Yeah, mislabeled.

Karl Holz: I was only able to access only Twitter, Facebook and Flickr with it. 

Manuel Lemos: Yeah. 

Karl Holz: But I haven't actually completed the project that I was using for it. 

Manuel Lemos: Because it's not just authorization, it's also the access to the API calls. And when, at least in OAuth 1, the parameter's have to be signed. But the parameters can be in the URL or can be in the header. And it depends, some services adopt one position and others do it differently.

Well, it's terrible and the class is going to get very large because of supporting so many APIs and I probably have to detach some of the code to make it more expansible without having to change the code all the time.

Well, anyway, to end this interview, I would just like to ask you your opinion about, first, something that you may not like so much in PHP Classes that you'd like to see improved, and then, something else that you like and appreciate.

Karl Holz: Things I'd like to see improve... 

[Chuckles]

Well, I like how the site offers a way for me to make public my code and let people check it out and see and be able to vote. I like the fact that you guys provided for awards. I'm using Zend Studio now and I have to say I really like that. 

Manuel Lemos: Got it as a prize, right? 

Karl Holz: Yeah, got it as a prize. I already have a few, but that's one I still use. I still have Komodo but I hardly use it anymore.  Zend Studio IDEs with the Server Community Edition. 

Manuel Lemos: Yeah. 

Karl Holz: I guess, maybe what I'd like to see, maybe if it was easier for people to recruit jobs so I don't have to use a resume. 

Manuel Lemos: You mean, to apply to the jobs. 

Karl Holz: Yeah, something where I don't have to actually send them a separate file link. To me, I find that just redundant, but that's just me, anyway. 

[Cross-talk]

Manuel Lemos: Yeah. Right. 

Karl Holz: People see the work already there. 

Manuel Lemos: Yeah, I see what you mean. It's that some recruiters expect that they want you to send a separate file. So they look at it and...

Karl Holz: Yeah. 

Manuel Lemos: Because there are options for them to choose how to apply. You could just send them a comment on "Look at my resume here," and that would be it.

Since that is an option, some companies require that to send a resume but I guess there is not much that can be done about that. But anyway, I... 

Karl Holz: You can auto-generate a PHP class resume. That may be an interesting option, I guess. For some, think about it as a feature. 

Manuel Lemos: Well, one thing that was already requested and maybe I would like to do it in the future but it's buried in the large queue of to-do things is the ability to show what have you done so far in the site that deserve some recognition.

And probably that would help the recruiters or the companies to better realize the value, the capabilities of the developer that is applying. 

Ernani Joppert: Yeah. 

Manuel Lemos: Well, that is something that I would like to do but just don't know when. 

[Chuckles]

Karl Holz: One of thing I like though is the GitHub. I like the fact that I can connect to GitHub and quickly upload classes easily. 

Manuel Lemos: Yeah. 

Karl Holz: That's a big time saver. 

Manuel Lemos: Right. That took me a long time to develop but it was necessarily. 

Karl Holz: I would like to think so. 

Manuel Lemos: Yeah. And it was not easy because the Git protocol is not very well documented and you have to figure a lot of things. 

Ernani Joppert: And Manuel is like, he reverses engineered things to his understanding as well. 

Manuel Lemos: [Laughter]

Well,it's not just me. I have to confess that I also check code from others, even other people's PHP classes. I think it was Cesar Rodas that sent the class to access the Git repositories. I checked that.

I also checked the C source code of the Git command to understand why certain things were not working because the documentation is very, very poor of the protocol. 

Well, never mind, as long as it is working now. There were some glitches in the past because there are bugs in that interpretation of the protocol. But fortunately, they were solved because some developers said, "Oh, there are some files missing here." And I had to investigate until I figured what was the problem. 

Karl Holz: I know some files don't get downloaded but that's not a problem cause there's a link to GitHub anyway only.

Manuel Lemos: Well,those are intentional features, like very large files. 

Karl Holz: Or zip files. 

Ernani Joppert: Yeah. 

Manuel Lemos: Or binary files. That is a feature that is there intentionally because we'll never know if somebody's trying to spread some malware or virus.

Karl Holz: I think... 

Manuel Lemos: Yeah. So the site don't accept file format that it can verify...

Ernani Joppert: Right. 

Manuel Lemos: ... that it is what it says it is. But for some reason, you would find a format that you would like to see imported and maybe the site could verify it and support it better, just let me know.  

I know there are people that would like to see PDF support it. Well, I need to investigate. I don't know, what kind of formats did you stumble there that were not...?

Karl Holz: No, I just had a few zip files that I was using as testers that didn't get uploaded, you know, little ones. But it's not a problem, because as I said... 

Manuel Lemos: Those were test files, not exactly part of the package...  

Karl Holz: Not, really no. 

Manuel Lemos: ... that would be required.

Oh, OK, that I see. Well, that's great. We practically ended this interview. I'd like to thank you for your participation. 

Ernani Joppert: Oh, but we are forgettting one point. 

Manuel Lemos: Which one? 

Ernani Joppert: He's just earned now an elePHPant. 

Manuel Lemos: No, he's already showed it. 

Ernani Joppert: Oh, I didn't see it. How come I didn't see it at the beginning?

Manuel Lemos: You're probably looking at your screen sharing.

Ernani Joppert: Yeah, probably. 

[Laughter]

Manuel Lemos: Well...

Ernani Joppert: My nephew and my niece, they all love it. And I probably have now, it's a matter of owner to provide any knowledge of component and be able to earn one. 

Manuel Lemos: Yeah, that's what you need to do. I already told you before. 

[Laughter]

Manuel Lemos: Well, I hope with the new feature that are being implemented with the pointing and privileges, people will start to contribute more and probably in different ways that provide more value.

Anyway, as I was saying, I would like to thank you for coming, for participating in this interview. 

Karl Holz: Thank you.

Manuel Lemos: I would like to just invite you to continue in the show and help to comment on some of the latest happenings in the PHP world. That is the usual part of the podcast that I think most people that watch this are probably more interested in.

Zend Optimizer+ source code released (31:18)

Manuel Lemos: Basically, I would like to start here. Let me screen share just a few pages.  

There were some announcements. First, I would like to comment on the announcement from Zend that they have released the source code of the Zend Optimizer+ that we commented on the last show.

They offered to contribute to the Zend Optimizer+ which is an extension that basically does some caching of the PHP code so the code loads faster and eventually, the sites will also be faster. Thanks to that. 

The original plan is to integrate APC but since APC still has some bugs that are hard to fix and nobody is working enough on them to fix, then the Zend people offered the Zend Optimizer+ extension. And just recently, they finally  released the source code because it used to be closed source. And they actually made it available on GitHub. 

Ernani Joppert: It's very nice to see this participation from Zend because it could represent lots of revenues.

Manuel Lemos: I know. 

Ernani Joppert: But it's like improving PHP in one sense as well. 

Manuel Lemos: Right. Well, I think the caching part of this extension used to be part of the...

Karl Holz: The server?

Manuel Lemos: No, no. It used to be part... Well, I don't know about the Zend server, the paid version, but it used to be part of their caching extension that is a paid  product. 

Ernani Joppert: Right. And they had a Zend Guard that you could sort of obfuscate your code and put them... 

Manuel Lemos: Yeah, it used to encode files. 

Ernani Joppert: Yeah, Zend Encoder. 

Manuel Lemos: Yeah, but that's a separate product. 

Ernani Joppert: Yeah. 

Manuel Lemos: Well, it's interesting that they are releasing now this code as open source because probably they are giving up on some of the revenue that it used to generate. I think it adds great value to the...

Ernani Joppert: Community.

Manuel Lemos: ...PHP, because PHP required or is actually in need to have a caching extension shipping with PHP. It was planned to be APC but it seemed that it never happened. 

Karl, do you use any caching extension on your...?

Karl Holz: Right now, no. I haven't actually tried on my Ubuntu install yet. 

Manuel Lemos: Probably the caching extensions are not, or the sites that you have do not need a caching extension. Probably, they are not very busy. 

Karl Holz: At the moment, no. But eventually, I'll try to it out. Just got to do a... I'm set to try and compile it on my Ubuntu system. 

Manuel Lemos: Actually, I use, I think, eAccelerator. I think it's the current name. Originally, it used to be Turck MMCache. 

Ernani Joppert: Right. 

Manuel Lemos: And that extension was done by Dmitri Stogov and then, he was invited to work at Zend and stopped working on that extension. But somebody else picked it and now, I think Dmitri lend his knowledge in the caching extensions to the Zend Optimizer+. 

And one of the arguments that they provided to adopt Zend Optimizer+ instead... they have APCs, that they have several developers that know about caching extensions.

I mean, specifically as in Optimizer+ so it can be used on PHP and has several developers to support it to fix bugs. Because they know it well and these kind of extensions are very critical. They cannot fail because if they fail they'll crash the whole PHP execution. 

And this is great to see, but what was planned is that there should be a vote of the RFC that they presented to have, including PHP. But then, I don't know when that vote will happen. I think it should be happening anytime soon. They already released the source code for everybody to evaluate. So I don't know what their plans are for this.

PHP 5.5 Roadmap and Feature Freeze (37:20)

Manuel Lemos: Other than that, there was also an article. I don't know if I pasted the URL over here. Yeah, it's here.

Well, about the  PHP 5.5 road map.

Ernani Joppert: Right.

Manuel Lemos: I did not paste it here. I'm trying to screen share it. Yeah, here it is. It's a message from Julien Pauli. He's one of the maintainers of PHP 5.5... I mean, release manager.

They practically assumed that this RFC is being voted for approval. They cannot assume that until the vote of the RFC happens and it passes. But what they are saying, now that it's being planned to integrate the Zend Optimizer+, there'll be a feature freeze on PHP 5.5.

And, this means that any new features that anybody may want to propose must be future PHP versions like PHP 5.6 eventually or PHP 6. We don't know. It will always depend. But for PHP 5.5, it is something that it practically closed. 

Karl, are you familiar with the plan, the features for the PHP 5.5? Do you find those features interesting?

Karl Holz: It would interesting what happens. Right now, I'm into my Web service using PHP 5.4. Actually, I've jailbroken some of my iOS devices and I'm running PHP on those. 

Manuel Lemos: Oh, you're not supposed to say that you did that. 

[Laughter]

Karl Holz: [Laughter]

Well, you know. I have an iTouch Generation 1. So, I mean, it's obsolute as far as Apple's concerned. 

Manuel Lemos: Yeah, there'd be no more updates. 

Karl Holz: Oh, none. None. Same with my iPhone 3G. They're old. I don't use them for anything else. But yeah, the fact that I run PHP on them.

Manuel Lemos: Oh, really. 

Karl Holz: Yeah, PHP and MySQL.

Manuel Lemos: So what happens, do you run a Web server? 

Karl Holz: There's an actual project called iOS webstack that you can actually install through the thing. It's just all open-sourced. It's very interesting project. So it'd be interesting to see if they actually put PHP 5.5 on there.  

Manuel Lemos: Yeah. 

Karl Holz:  But my Zend Community Server is running PHP 5.3. 

Manuel Lemos: Oh, I see. Well, I think, at least everybody should be running, I think, PHP 5.3.11 because before that, there are some security bugs that may cause your Web server to crash. 

Karl Holz: OK. Everything I run is cool. 

Manuel Lemos: OK. Well, anyway, about this PHP 5.5, there is not much... anything new about it. There is also a new version, I think. I'm not sure if it's also 5 or something like that. But there are no new features, just new version to test and that's it.

Is PHP a Hobbit? (40:06)

Manuel Lemos: Well, moving on with the podcast, another topic that I would like to comment is about that article that I published like... 

Ernani Joppert: Right.

Manuel Lemos: Like a few weeks ago. 

Karl Holz: ...why PHP is a Hobbit? 

Manuel Lemos: Yeah. 

Ernani Joppert: Yeah. 

[Laughter]

Ernani Joppert: That was so funny. That was so funny. 

Manuel Lemos: Well, I don't know if everybody listening to the podcast was able to read  it. I'll just put  it here on screen. 

Basically, the story is very simple. There was a guy in the Quora site where they put questions and answers. And there, basically,he asked if there was a language war, which language would you support and why?

And then, there was a guy that also provided a very creative response, on which he started comparing languages with the characters of the Lord of the Rings story. 

Ernani Joppert: [Laughter]

If there was a war? If there was a war in programming languages, who would support each and why?

[Cross-talk]

Manuel Lemos: I think the answer is funnier than the question. 

Ernani Joppert: [Laughter]

Manuel Lemos: Because they started comparing The One Ring with C because it has the power of all that everybody wants to get. And then, it starts comparing with other...

Karl Holz: C++ is evil. [Laughter] 

Ernani Joppert: [Laughter] 

Manuel Lemos: Well, I look at this and they compared PHP with the orcs because it's ugly, doesn't respect rules. It's a big headache to a lot of people who manage them, but still dominates the Middle Earth. What they say is that orcs are teaming with Saruman and Saruman they compared to C++.

Karl Holz: Right. 

Manuel Lemos: This was a reference to the HipHop PHP Compiler by Facebook that used to be a C++ translator and that's no longer true. They now have a JIT with Dynamic Compilation. It's no longer a C++ translation. So that is not accurate. 

So I decided to write this article just to put the record straight, at least in my opinion, of course. This is not a general opinion.

Ernani Joppert: Yeah.

Manuel Lemos: And basically, I just felt that it wasn't fair to compare PHP with orcs because if you follow the story of the Lord of the Rings, in the end, the Hobbits are the one that solved everybody's problems.

Ernani Joppert: [Laughter]

Manuel Lemos: So I think it would be more adequate to compare PHP with the Hobbits. Not, just because of that, because of other reasons.

People always say that PHP is not beautiful. But what matters is that it is useful because in the end if it were not the Hobbits, who else would have solved the big problems? 

Ernani Joppert: Right. 

Manuel Lemos: And PHP is very popular, unlike the Orcs. Orcs are not very popular. 

Ernani Joppert: Yeah. 

Manuel Lemos: And so...

Ernani Joppert: It's a great analogy.

Manuel Lemos: I put like six reasons here. I think I could make up a few more.  

Ernani Joppert: Yeah, it's a great analogy.

Manuel Lemos: Yeah. One that I put here, and I was a bit reluctant to put here is that the PHP's success causes the envy of others.

I think this is very accurate because I see most people that complain against PHP, they are usually somebody that has an agenda to favor some other language... can be Ruby or Python. 

Karl Holz: Or Perl.

Ernani Joppert: Yeah, Perl. 

Manuel Lemos: Anything. And the fact...

[Cross-talk]

Ernani Joppert: Sorry. But I just wanted to say that some of the Python community tried to boycott PHP and their Google's infrasctructure.

Manuel Lemos: Yeah. 

Ernani Joppert: This is something that I don't understand at all. 

Manuel Lemos: Well, that is one theory. Although Google will never put that out that way, but the fact is that Google hired the creator of Python. And there is also that process of hiring of Google that you have to pass several interviews. And if you are a PHP developer and you face a Python fan, you don't pass the end of the interview on you are out. 

Ernani Joppert: [Laughter]

Manuel Lemos: That probably explains why there are not many people developing PHP in Google.

Karl Holz: I see. 

Manuel Lemos: Well, but that is just a theory. It's not based on first-hand knowledge. 

Well, anyway, the PHP success, I'm thinking that part is due to popularity of certain projects, more specifically...

Karl Holz: WordPress. 

Manuel Lemos: ...WordPress. WordPress is huge. I think WordPress alone would be bigger than PHP. Because I see many people that are just WordPress developers. They do not develop anything in PHP, just WordPress which is amazing.

They might even know how to create a theme, because theme's in WordPress are also PHP code. But they probably would not know much about object oriented programming or stuff. Yeah. And this is quite impressive.

Anyway, what PHP has that  probably justified this popularity is that people that are behind PHP and WordPress are very pragmatic. They want to solve the problems and it doesn't matter if the code in the end is very beautiful or not.

And this probably upsets those people that care about codes being well formatted, very readable according to certain standards they they imposed. Well, this is a bit odd but it also matters.  

Anyway, this is just a fun article. It was not meant to be taken too seriously. But it had a lot of common...

Ernani Joppert: There is one thing, right? That computers exist and are so common than ever existed before. 

Manuel Lemos: Yeah. 

Ernani Joppert: And code clean-up or code standard or code conventions are also trying to address a problem which has never existed before because the real problem is to actually do what you want to do.

Manuel Lemos: Right. 

Ernani Joppert: Then, this is the main objective. And, I mean, the human being is very powerful and very intelligent. Sometimes they focus on not the main objective and PHP does what it does and it does very well in its main objective. 

Manuel Lemos: Right. That's very true.

Latest JavaScript Objects released in the JS Classes site (47:42)

Manuel Lemos: Well, OK. Anyway, I don't know if you wanted to comment anything else regarding this article. If not, we need to move on to the next section of the podcast on which you comment on the latest classes. First, those that were published on the JSClasses site.

And let me screen share it here. Well, on the last month, there were like I think about  ten classes. 

And we already started the Innovation Award in the JSClasses sites. So at least until this month, we should not comment on those that will be nominated to not influence the votes. This means that we only have three classes that will not be nominated. 

Ernani, which one would you like to comment. 

Karl Holz: I'll take the AJAX Request. 

Manuel Lemos: Yeah. 

Karl Holz: So far, this looks pretty interesting. It's not jQuery...

Manuel Lemos: Can you screen share? Can you share?

Karl Holz: Hold on. OK. Is the screen share going?

Manuel Lemos: Yeah, you can continue. 

Karl Holz: So far, it's not jQuery based but it's using basically the standard JavaScript for making the class. Honestly, I would have done it in JQuery myself, it'd be a lot easier.

Manuel Lemos: Yeah. Yeah, there are pros and cons, depending on jQuery or not. But basically, nowadays, jQuery is very widely used.

Karl Holz: Of course, yeah. 

Manuel Lemos: jQuery is very... 

Ernani Joppert:  Everybody has like their own preference. I mean, this guy probably has more control. So far, it looks nice, but from what I see, it looks like it's mostly GET requests.

Manuel Lemos: Yeah. Sorry, there are a couple for AJAX. Which one are you commenting? 

Ernani Joppert: I was commenting on the JavaScript AJAX request, send AJAX requests to a given Web server.

Manuel Lemos: OK. 

[Cross-talk]

Ernani Joppert: Oh, I'm back.

Karl Holz: Hold, I forgot his name.  Oh, he's from Brazil. Ricardo Luiz Rossi, sorry if I butchered your name, buddy. 

Manuel Lemos: [Laughter]

Karl Holz: Well, it looks interesting.

Manuel Lemos: Right, that's the one. Because there is another one. Ernani, before you drop your connection, can you comment on the JavaScript?

Ernani Joppert: I'm not the one dropping my connection, just for the record. 

Manuel Lemos: [Laughter]

Ernani Joppert: [Laughter]

But I'm still having wi-fi...

Manuel Lemos: OK, you're not doing it on purpose.

Ernani Joppert: Yeah, I'm having wi-fi issues here. I've been trying to address it. Maybe somebody can write components to address wi-fi issue. That would have been nice. 

Manuel Lemos: It would be innovative.

Ernani Joppert: Yeah, for sure. But yes, the component is from Fabio? He's from Brazil and it's a jQuery plugin to show plugin to show a month calendar on a page. And it can render a table inside of a given page element with the days of the calendar of the month. It's nice to see components like this. There are standard calendar, right? 

But it's nice to see component that adds features and this is OK. They could improve the standard calendar but sometimes it's not a decision that is easy to be taken. And it's nice to see that people are still working on improving the standard control, the standard UI components from jQuery. 

Manuel Lemos: Yeah. Well, I don't know if, I'm not sure if HTML 5 has some form input to pick dates. Anyway, you cannot rely on whether the browser supports any of those inputs. 

But on my part, I also would like to comment on another class. Let me put it on the right page. Oh, I see, I changed it.

The other one is also for sending AJAX request. And there are quite a few classes to send AJAX request there. That topic's almost covered. but since this time we are not focusing on innovative components, we'll just comment on those that were not nominated for this month. 

In this case, it was the AJAPH... I'm not sure how it is pronounced... from Pierre-Henry Soria. And basically, that's what you see, many objects for this purpose which is to define some callbacks that will handle the responses of sending AJAX requests. 

Well, this month that is all that we are going to comment about JavaScript classes. Starting next month, we will only comment on innovative classes. So I hope everybody that is submitting classes to the JSClasses site to send mainly innovative classes so we can talk about them.

PHP Programming Innovation Award Winners of December 2012 (53:21)

Manuel Lemos: So now, we are going to move on to the Innovation Award Winners that were nominated in December of 2012. And there were like ten nominees. Karl, can you please start commenting about a couple of classes that you found more interesting. 

Karl Holz: OK. I had a comment on the PHP My SVN Admin by Jaswinder from Canada. 

[Chuckles]

My country. 

Manuel Lemos: Oh, emphasis on Canada. 

[Laughter]

Karl Holz: Yup. [Laughter]

Manuel Lemos: If you screen share the page of the class, it would be interesting. 

Karl Holz: Yes, hold on. Let me just share that. 

Manuel Lemos: Yeah, it always a challenge when we have several monitors, right? 

Ernani Joppert: [Laughter]

Karl Holz: Oh, yeah. I turned off the third one. 

Manuel Lemos: [Laughter]

Ernani Joppert: [Laughter]

Karl Holz: That's on USB. Wait a minute. OK, it should be sharing right now. 

OK, basically, I got number two.

Manuel Lemos: Yeah. So I supposed that...

Karl Holz: So far I'm looking at... Pardon me? 

Manuel Lemos: No, I supposed...

Karl Holz: It's got a configuration that's pretty simple. 

[Cross-talk]

Manuel Lemos: Jaswinder is probably a nickname. 

Karl Holz: Ah, I guess so. 

Basically, it looks pretty simple, this app. Basically, it configures the SVN files so you have to actually have a SVN setup. I'll refuse... but I don't know. 

Manuel Lemos: Yeah, well, it is always useful if you are working with the SVN and you have to manage to create some repositories and manipulate them. 

I think there were other classes where it says...

Karl Holz: Yeah, especially... it's fine.

Manuel Lemos: There are other classes to manage... I mean to access SubVersion repositories but this is the first one to do actual management task. So, kudos to Jaswinder for his contributions. 

And other than that, which one would you like to comment? 

Karl Holz: I was going to also comment on Leigh Edwards, Canada as well. He created Davis Weather, communicate with Davis Weather stations.

Basically, what this does is it can communicate over  TCP/IP with the weather station using the IP network. And see, take a look at it. Or they can store the information that you grab in MYSQL.

Manuel Lemos: Right.

Karl Holz: Let me just pull up and screen share. 

Manuel Lemos: Yeah, I don't know if you're screen is frozen. 

Karl Holz: In mine?

Manuel Lemos: Yeah, because it only shows the same picture. 

Karl Holz: Hold on, let's go back and screen share the second window. 

Manuel Lemos: Yeah. You have to re-start screen sharing. I don't if it is a bug of Google Hangout. We've been using Google Hangout since the beginning and well, it used to be worse. But it already has been better than this.

Karl Holz: It's first time using it, so I'm still trying to get used to it.

Manuel Lemos: OK.  

Karl Holz: Looks nicely laid out, nice and clean. This code one is... I mean, I have actually tested it.

Manuel Lemos: Yeah, this one is to  check I think...

Karl Holz: I mentioned that...  

Manuel Lemos: Davis Weather station. I'm not familiar with this weather station but I'm supposed there's an external device to communicate, probably a network cable. 

Ernani Joppert: Alright, it should be sufficient way to gather weather data and provide something on top of it. 

Manuel Lemos: Yeah. Yeah, and this one is by Leigh Edwards, also from Canada. 

Karl Holz: [Chuckles]

Manuel Lemos: You did not pick classes from Canadians intentionally, right? It was totally... 

[Laughter]

Karl Holz: Sure. 

[Laughter]

Ernani Joppert: [Laughter]

Manuel Lemos: They probably are paying you to do that. 

Karl Holz: No one's paying me anything.

Manuel Lemos: Maybe they should, by giving them some additional exposure. 

Karl Holz: [Chuckles]

Manuel Lemos: Well, OK, Ernani which ones would you like to comment on this month?

Ernani Joppert: OK, if my connection doesn't drop, the first component that I like I see here is the Shorten text to fit within a limited length. It can be a basic component, if you consider it to the same point.

But it can also do teach other developers on how to have ideas to provide things as a benefit to try to shorten links, to shorten text and to try to summarize things as well. 

Manuel Lemos: Yeah. And that one, let me see... That one is from?

Ernani Joppert: Let me just get the name of the submitter. I couldn't find it. I just see Tony here. So maybe he didn't mention his full name. He's from Australia. 

Manuel Lemos: No. He's from Australia. You know, In Australia there is only one Tony. That's the one. 

Ernani Joppert: Oh, I see. So I guess I was right.

Manuel Lemos: [Laughter]

Yes, you are right. 

Ernani Joppert: How come you don't know Tony?

Manuel Lemos: No, it's Tony from Australia. Who else can it be? 

Actually, this class, there are other classes for somewhat similar purposes but they do not work with the same constraints and this one is innovative because of that.

Ernani Joppert: Right. 

Manuel Lemos: Being able to fit a text.

Ernani Joppert: Yeah, one feature that I like is it may also fit into columns over table by shortening or wrapping the text on the column. So it's nice to see that he's doing some kind of server side optimization to address this particular need. 

Manuel Lemos: Yeah, sometimes you need to send, for instance, newsletter in text and you need to display something in tables.

And, in this case, this class can be useful for that purpose. Because this one now, there are other classes that can fit some text within a given length but it is graphical text, not text considered on a character basis.

OK, once again, kudos to Tony from Australia for his contribution. I hope he continues to send more innovative packages like the second innovative package that he sent. 

Ernani Joppert: Right. 

Manuel Lemos: And other than that, which other class would you like to comment? 

Ernani Joppert: Yeah, the next one is from the Yasir Siddiqui, if I'm saying his name correctly. And he's from Pakistan. And it's Fetch Apple iTunes data. I like to see those because sometimes you have to... I like to imagine that you are building a website that wants to track down an artist's library. And you can pull it out from iTunes data and patch metadata which can be useful for your service.

And it's most likely that it will be available most of the time because of the infrastructure that Apple provides on the iTunes Store. So it's nice to see that you can benefit this as a Web service. 

Manuel Lemos: Right. I think this parses XML feeds that are results of searches done on iTunes site.

Well, on my part, I would like to also mention a couple of classes. One is to use the Mailman which is a mailing list manager program written in Python.

And this is just to say that there are no hard feelings towards Python as a language or Python developers here. We, PHP developers do not have a problem to interface with the Python programs if they are great like the Mailman, which is very popular mailing list manager. At least, in the past, I used to hear about it a lot. 

And this one is from Angel Talaveron from Spain. It is his first nomination but I hope he can continue to submit more innovative classes. 

And the other class that I would like to mention. This one I could say it's almost from a veteran, Pashkov Denis Igorevit... oh, sorry, Igorevich.

Ernani Joppert: [Laughter]  

Karl Holz: Yeah, it seems very hard for you. 

Manuel Lemos: Sorry, Pashkov. This is really challenging. 

I was saying he was a veteran because from 19 packages, ten had already been nominated to the Innovation Award. One of them was even a winner in one month. 

And this one it is somewhat related to the previous that he published. Basically, it can extract patterns of text based on examples. So, we provide some examples of text string that you want to extract and it analyze some of the format, some punctuation, characters that  it may contain to figure a regular expression that would match those patterns.

And this is very advanced, like others that Pashkov had sent in the past. So kudos for him. 

Ernani Joppert: Yeah, I believe this can be use not only to extract text but also to tags from HTML, right?

Manuel Lemos: Well, maybe it can be adapted because, well, we have to consider also the characters that usually make a part of tags. But I think it can be a possibility. But this one was not thought specifically for HTML. It's just for general text so it could be adapted to better address the need to extract patterns from HTML documents.

Conclusion (1:04:37)

Manuel Lemos: Well, with this one, we practically ended this podcast. I would like to thank you, Karl, once again for coming in this. 

Karl Holz: Thank you.

Manuel Lemos: Congratulations for your nomination. I hope this continues to be an encouragement to send more innovative packages.

Things, as I mentioned before, hopefully will become even more fun to submit packages because there will be this new system of points and privileges.

There'll be different level s of reputation that are being applied on the site. This is something that is being worked on. It's not yet available. Only a few beta testers have access to it. But things will continue to be more interesting and will address better the needs of more developers. 

With that note, I don't know if you have anything else to add.

Karl Holz: No.

Manuel Lemos: OK. 

Ernani Joppert: Thanks a lot, Karl. I have something to add. I just wanted to thank you for your contribution for sure. And just wanted to also re-emphasize Manuel's efforts here. That it's nice people providing nice components, and it's nice to see that you gave your time here to us and your opinion. That really matters, don't think otherwise. 

And another point is, I hope it benefits your career. 

Manuel Lemos: [Chuckles]

Ernani Joppert: Since you said you don't work at the field of PHP, but I guess it's somewhat your passion. 

Karl Holz: It's something I like to do. 

Ernani Joppert: Yeah, I guess so.

Karl Holz: And that's what I was hoping with this site, was to expose what I'm capable of doing. So people can hire me. 

Ernani Joppert: And I believe that working with IT and or with development, it's something that I love to do. And I guess, you somewhat love to do and Manuel loves to do. I can exactly tell that.

And it's very nice to see that somebody who puts passion on things to benefit from it and I expect that within your career, you find your challenges on this field, because you're a very talented developer.

Karl Holz: Thank you very much. 

Ernani Joppert: And one question that I have for you is would you be able for remote work? And if you do, should people contact you over at PHP Classes site for any discussion?

Karl Holz: Yes, they're more than welcome to contact me through the PHP Classes site. I'm available for remote work.

Ernani Joppert: Oh, that's great.

Karl Holz: You are more than welcome to contact me for either piece work or if you need me to do a project. 

Ernani Joppert: Freelances and etcetera. 

Karl Holz: Yeah. 

Ernani Joppert: That's great. That's great to hear.

Manuel Lemos: And just to make it easy...

[Cross-talk]

Manuel Lemos: No, just to mention that anybody that wants to hire Karl will just need to go on the site. On the pages of their classes, there is a link that you can use to contact him precisely for that purpose. And it says "This developer is available for hiring." And you just click on that link and you will be in touch with Karl with whatever your needs to see if he can help you. 

Sorry, Ernani, we are concluding.

Karl Holz: [Laughter]

Ernani Joppert: Oh, no problem. I just need to go on mute here. Yeah, the other, just another point is, sometimes you don't have the free time that you wanted to  have to put passion because you have your day job and you can't mix up things.

And I totally get it, but if things can be done in parallel, it's great to see that you are available and I wish you all the best on your everyday work. 

Karl Holz: OK, thank you very much.

Ernani Joppert: Yup. Thanks, Karl.

Manuel Lemos: On that awesome note, we practically end this podcast. So on my behalf, I  hope to see you next month. So that's all for now. 

Ernani Joppert: Thanks, guys. Bye-bye. 

Karl Holz: Bye. 

[Music]




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

1,614,280 PHP developers registered to the PHP Classes site.
Be One of Us!

Login Immediately with your account on:



Comments:

1. PHP - Federal University Oye Ekiti (2013-04-03 21:01)
procast... - 0 replies
Read the whole comment and replies



  Blog PHP Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog PHP Innovation Award ...   Post a comment Post a comment   See comments See comments (1)   Trackbacks (0)