PHP Classes

Accelerating PHP 5.4 with updated PHP cache extensions - Lately in PHP podcast episode 26

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


Viewers: 12

Last month viewers: 2

Categories: PHP Performance, Lately in PHP Podcast, PHP opinions

Despite PHP 5.4 was released some time ago, only now PHP caching extensions like eAccelerator and APC are being adapted to work with PHP 5.4.

This was one of several topics discussed in the episode 26 of the Lately in PHP podcast on which Manuel Lemos received Michael Kimsal as guest co-host.

The also discussed the latest PHP 5.4.5 and PHP 5.3.15 releases, the planned implementation of generators and the yield keyword in PHP 5.5, the usability problems of the current Web browsers, and the upcoming Indieconf 2012, the independent Web professionals conference.

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

Loaded Article


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.

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:

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)

PHP 5.4.5 and PHP 5.3.15 releases (1:18)

eAccelerator PHP Caching Extension Available for PHP 5.4 (5:05)

Call from Rasmus Lerdorf to help fix APC caching extension for PHP 5.4 (7:44)

Generators and the yield keyword in PHP 5.5 (13:12)

The Usability Challenges of Current Web Browsers (18:09)

Latest JavaScript objects published in the JSClasses site (34:40)

PHP Programming Innovation Award winners of May 2012 (40:57)

Indieconf 2012: The Independent Web Freelancers Conference (53:10)

Conclusion (58:06)

Introduction (0:20)

Manuel Lemos: Hello.  Welcome to the Lately In PHP podcast.  This is episode 26, and this time I have here as my co-host, our inspiration, our leader, Special K, our guru.  Hello Michael, how are you?

Michael Kimsal: Hello, I'm too legit to quit.  Oh I'm sorry, too legit, I had the mirroring wrong.  I'm sorry.  Can you hear me okay?

Manuel Lemos: Yeah I can listen to you fine.

Michael I get that a lot.

Manuel Lemos:  That’s McHammer right?

Michael Kimsal: Oh yeah.

Manuel Lemos: Oh last time you mentioned that I had to research.  It's so old, it's my time, but I'll tell you to still old I am...

Michael Kimsal: Please Manuel don’t hurt him yeah.

Manuel Lemos: Alzheimer is attacking me again, okay.

Michael Kimsal: I have got my parachute pants on below so I will just... you will only see me from the neck up, but I have got my parachute pants on.

Manuel Lemos: Oh that’s good.

Michael Kimsal: Yeah.

PHP 5.4.5 and PHP 5.3.15 releases (1:18)

Manuel Lemos: Well, we are here to talk about PHP, and we are going to start talking about the latest topics.

Michael Kimsal: Yes.

Manuel Lemos: And some things that happened in the PHP world recently now that PHP 5.4 is practically being stabilized now, there are only a few releases read mostly about fixes, there is this release of 5.4.5, that it's basically that, and there is nothing much to say.

There they mention there were 30 bugs that were fixed including some security related flaws, and there is nothing else to mention about it.  Also it has been released the 5.3.15 which... well they mention partically the same release text, so I suppose the same security bugs have been fixed or backported or whatever they called these days, well I don’t know.

Michael Kimsal: Yeah, I'm only running 5.3.13, so I am out of date.

Manuel Lemos:  Well, I think you are fine as long as you will run 5.3...

Michael Kimsal: 13

Manuel Lemos:  ... .11 at least because there was that major fix on... that problem that could bring down your web server.

Michael Kimsal: I think I only went 5.3.13 a few days ago.  I think I was at like 5.3.3 for a long time so.

Manuel Lemos: Yeah mean in your production servers?

Michael Kimsal: Yeah.  I upgraded accidentally the other day, and I guess it's a good thing, now I'm on 5.3.  I was upgrading something else, and of course in the Linux world you can't just get one thing.  You need to get 18 other packages that are all related, but I'm up-to-date.

Well I'm not on 5.4 yet, but I haven't even installed 5.4 on my test machines yet, so I feel like I am way behind.

Manuel Lemos: Well, in my production server I compile PHP manually so...

Michael Kimsal: You do everything manually because you are Manuel.

Manuel Lemos: Oh thank you.

Michael Kimsal: Ho-ho-ho English. 

Manuel Lemos: That was an awesome joke.

Michael Kimsal: English adverbs I tell you.

Manuel Lemos: Well...

Michael Kimsal: What anyway I do okay.

Manuel Lemos: Anyway, I compile it manually so I can upgrade to a specific PHP version without depending on other packages, unless it's something new and a newer version that depends on some package on the system that I need to have compile, but that is great because it gives more flexibility, but I have to pull several control. You mean you have hitting on dedicated servers or ...?

Michael Kimsal: Yeah I managed my stuff, but I tend to just use the most...  say most it's not like I have a whole datacenter or anything, but I have a few servers, and it tends to be either CentOs or Ubuntu, so it's either Yum upgrade or Apt-get upgrade, update I should so anyway...

Manuel Lemos: Yeah, oh that’s more of a flexible after all, you don’t have to think much, and but I also depend on some extensions that might not be available on that is also a good way to introduce one of the next topics which is related with accelerator.

Michael Kimsal: There you go.  That segway was awesome, and that's not something that somebody has said to anybody in Amazon be here. 

Manuel Lemos: Yeah I didn’t plan for that anyway.

Michael Kimsal: Just happens.

eAccelerator PHP Caching Extension Available for PHP 5.4 (5:05)

Manuel Lemos: The topic that I want to bring up, it's a bit out of order, but now that I mention it, its about eAccelerator PHP caching extension that I use in my servers, and well this is the follow up of the original extension that was called many years ago Turck MMCache.  It was originally developed by Dmitry Stogov, but he went to work to Zend I think and then he stopped working on this extension, somebody else picked up.

Anyway what is new on this... well I cannot call it a release because it's still in GitHub.  They did not officially announced the latest version that already supports PHP 5.4 which is something that required some changes some updates to the code to integrate better with... well the version that you need to...  there are many I think from what understood are many changes in the PHP extensions interface that required some work, just not the mere recompile. 

Anyway since I had that on my server I had the to also recompile that manually as long as some other extensions...  I think its upload progress which comes also separately, and also JSON. This is a bit surprising to me,  I thought JSON was built in the PHP, many PHP installations but if you don’t enable the extension at compiled time, it does not become available.

But at least it's not separate from the distributions as it was used to be in the past.  And since nowadays encoding and decoding JSON it has become very important, if you compile it manually you have to use explicitly enabled the switch and the bigger script that compiles PHP with whatever extensions. You usually do not compile PHP manually, right?

Michael Kimsal: No.  I used two years ago, but I haven't them need to... 

Manuel Lemos: When you had time?

Michael Kimsal: Well I used two years ago.  I don’t have any need to, so the defaults and the few extra extensions that I can yum-update or yum-install, that’s plenty for me.

Call from Rasmus Lerdorf to help fix APC caching extension for PHP 5.4 (7:44)

Manuel Lemos:  Yeah, well but talking about PHP extensions this is another segue for the next topic that I wanted to talk about which is related to with APC extension which is also another extension for caching compiled PHP code at run time, which is a very important, every site even not so busy sites need a PHP code caching extension, running or else you probably running very inefficiently.

And that so far APC is not being bundled within the main PHP distribution because core developers claimed that it was not quite already there some serious bugs still creeping in this version.

And what happened recently just a few days ago Rasmus Lerdorf as we all know the creator of PHP posted a message, basically it is a call for help of other people to help tracking bugs that exist filling APC and then preventing it from being shipped with PHP 5.4.

That was the original plan. Actually APC was meant to be ship built in PHP 6, but since PHP 6 original plan was cancelled, it was anticipated to PHP 5.4, but with the bugs that they claim that are preventing it ship as it's not quite a stable release for such an important PHP component so it is not still being shipped.

And everybody that to like to use APC would like to see all those bugs fixed, so it becomes sort of the mainstream extension, because it sort of hurts PHP in terms of performance benchmarks, especially in comparison with other languages everybody that wants to show how PHP does in comparison with other languages, sometimes compares with and unfair setup.

Michael Kimsal: I don’t think we need to rush into this though.  I mean APC is only been around 13 years.  It's pretty new, so yeah there might still be a bug in it some place so until it's 110% bug free we better not bundle it because that would mean that PHP would have bugs in it, and PHP doesn’'t ship with bugs either.

Manuel Lemos: No that's lovely.

Michael Kimsal: So I think... and I understand the motivation.  I just don’t think we need to rush into this.

Manuel Lemos: Right.  There is no rush after all that we can always wait for the next millennium and maybe then probably one bug of more or less it will not affect PHP then I think.

Well, anyway those are criteria presented by core developers.  Sometimes do not quite follow on to on those criteria, but okay that seems to be the criteria that is being applied currently, and anyway Rasmus is calling for help.

Michael Kimsal: That's scarier.

Manuel Lemos: To fix those bugs.  It seems they are complicated because they deal with the probably in memory corruption with competing the tasks accessing cache entries simultaneously.

Anyway he just posted that message that I will post in the show notes of the podcast, so people can learn a bit about the techniques that is presenting to help debugging complicated bugs that are still hanging in this extension.  Well, until you figure that PHP, APC extension is ready to be used.  You can always try eAccelerator as I mentioned before.

Michael Kimsal: Or Zend server?

Manuel Lemos: Well Zend server doesn’t it came with APC?

Michael Kimsal: No.  They have got their own accelerator.

Manuel Lemos: I thought they are actually shipping the APC with the free version.  

Michael Kimsal: No.

Manuel Lemos: Well, may be I'm seeing some things. 

Michael Kimsal: You are wrong as what that is.  We can't whitewash on seeing things.  Oh, I have made a judgment in error, no you are wrong, just you are wrong, R-O-N-G, Wrong.

Manuel Lemos: No, well I could swear I've seen APC in the free version.

Michael Kimsal: You could swear a lot of stuff, but yeah whatever.

Manuel Lemos: But I have only tried it as an in server once just for benchmarking for an article that I published about comparison of compilers, PHP compilers.  Well, anyway that’s it about the APC extension.

Generators and the yield keyword in PHP 5.5 (13:12)

Manuel Lemos: And now, I would like to move on to another topic which is more related about possible features of upcoming PHP versions.

There is one feature that I am still struggling to try to understand how exactly it is supposed to work. The name of it, they are calling it generators, but I am not sure even why it is called generators?

Michael Kimsal: You got to keep them generated.  I think it goes with the song from 19 years ago, and that’s what I think but I don’t know.

Manuel Lemos: Yeah may be its related to the purpose that the typical purpose of the use of this feature.  Well, basically what it is meant from what I understood is to help on iterating over data or whatever, something that needs to be split in small chunks like for instance reading large files And basically they introduce a new keyword named yield.

Michael Kimsal: Yield, yield like that.

Manuel Lemos: Yeah.  I think I am not sure I don’t know it is the same meaning of the yield keyword in Python.

Michael Kimsal: I think it's meant to be similar.

Manuel Lemos: Yeah, well basically...

Michael Kimsal: You are like you are returning this value at this moment in time to something else, but you are not actually returning control of the program all the way.  That loop for example on your screen there that loop is going to continue to execute, but that value in the yield is going to be exposed to the code that was calling it if that makes a lot of sense. 

Manuel Lemos: Well, this is the tricky part to understand because how this working practice does it mean that the function would return there when you have the yield lines and return that value?

Michael Kimsal: No.  Well, and like the example here is weird because yield line would give back that.  It should give back that.

Manuel Lemos: Line value of it.

Michael Kimsal: That value, that dollar line value to something if something else was calling this in an iterative, or in like a loop fashion then it would be like it was giving that value return to it all the time, but that get lines from file function would keep running.

The odd thing here is that they are saying yield line, but because you are doing it multiple times what you are getting back is effectively a... well no, no, no... you actually get lines from file, that's weird because it looks, and I didn'’t read this particular screen, but it's not running ahead of time, but it was acting like it would be giving back in array.

In that case that’s almost behaving like not an interface.  I'm actually thinking of improving right now but...

Manuel Lemos: Well, we need to suppose to improve the iterative interface, right.

Michael Kimsal: Iterator that’s what I was thinking of, yes about interface so I was thinking of anyway...

Manuel Lemos: It's a bit confusing for me all of the flow would work in practice.  Maybe the examples here are not really good enough to explain it.  And I just suspect that to say something is too hard to explain,  it probably won't yet many, many users adopting it because they will have an hard time to understanding what they are doing.

Michael Kimsal: Yeah this would be ah, in groovy that you wouldn’t use the keyword function, that would probably a closure, and you would just be iterating over that, and you could yield back.

For me it makes more sense in another language, but looking at it here especially with that example it wasn't clear like saying this is a function.  Well, is it really?  Is it going to execute when you call it or is it executing when it's being dealt with in the foreach loop?  That is not at all clear is to what the intention is.

Manuel Lemos: Yeah it's confusing.  Well, anyway we will have to wait and see because this is planned for PHP 5.5.  I don'’t know if this is of a great use because in the end it will probably act like the regular iterator interface, but okay I will have to admit them probably I am misunderstanding something here may be this is much simpler than that it looks like.

And well, anyway let's move on to the next topic, and whoever wants to inspect more on this topic so there would be a linking the show notes as usual to get more information.

The Usability Challenges of Current Web Browsers (18:09)

And well, but moving on what I would like to cover next, it's more about actually an article that I wrote like few days ago.

Well, today is Monday 30th so this was like four days ago.  And this article is basically to comment a bit about the state of them of the browsers, specifically the state of Chrome browser.

And the article is a follow up of another article that I wrote last year which is called Top 10 Reasons Why Firefox is still Better Than Chrome for Web Development.

And the article this time updates the chart with the progress of the market share of the browsers showing that basically Chrome are increased by over 10% since last year while Firefox lost like a similar number 9.5%.  Internet Explorer also lost a bit although this share is quite... it was already very small.

And when I mean this share I mean among the web developers.  Basically I took the statistics of the PHP classes' site specifically the users that they have logged in the site in the last month, and extracted these values that show that Chrome is increasing a lot.

The article also shows a short from StatCounter which is a site that keeps the track of statistics of sites.  And it shows that globally Chrome has already catch up even Internet Explorer, probably about I think May or June, and it keeps growing.

And well what matters to us is well for web developers is that at least in some points Firefox is still better, but Chrome has improved a lot.

And this article actually came after I have met Googler in an event that I attended recently.  It was not really for developers the event itself but Renato Mangini from the Google Chrome developers relation was there at the event. He gave a presentation about Chrome.

And actually told him about this article of the Top 10 Reasons Why Firefox is still Better.  And he wanted to know about so I sent him the article and there he replied in a very short notice telling about features that already overcome some of the problems, as well his suggestions while to work around some over the other limitations that Chrome itself does not overcome.  

And I think it was very interesting. This dialog, if I can call it a dialog, seeing that Google as now even the dedicated person to actually interact with the community of developers, and show interest on seeing what are the limitations that Chrome still has, and what are the concerns of the web developers, but the fact is that Chrome still has some deficiencies.

Sometimes it's not exactly in the features, but the way the features are provided, they are sort of hidden in sometimes in configuration tabs that you need to realize they are there, unless you will never know and never take advantage.

One of the features that he mentions is the... well at least I didn’t know that if you want to access a page, and force the browser to retrieve it from the servers as opposed to retrieve it from now the browser cache,  you can use the shift key when you use the reload button. 

But how would I know about that feature if nobody else has told me about because the user interface does not provide any suggestions?

Michael Kimsal: You are bringing up an interesting point about how we would know, and I think that was mimicked. Yeah, I think that was mimicked from IE from some years ago that that shift F5 or shift reload would clear, it would load from the server rather than from the cache, so they are copying a previous thing, but where did people learn that from which actually brings up a bigger issue to me of, and it's kind of related, kind of not, but how do we learn anything.

I come and I think you probably somewhat come from the age where you would go to a store and you would buy some software, and it would have a manual, and it would say to do this press this button, and to do this choose this menu, we don’t get that anymore.  We don’t get anything, 

And the fact that there is books called the Missing Manual means that we are acknowledging there are no manuals.  We just have to discover stuff based on convention, and yes things like having the internet around has made it easier for people to ask, or people to publish.  Well, here is how I learned this.  And here is how I learned that. 

But unless you have something in the interface or hey a help file, I mean Chrome and this brothers have help files, and yet I don’t see any of these tips and tricks even added to their help files.  Why?

You know yes don't... you could say don't have 50 buttons because that clutters up the interface, but they could deliver tutorials that come with the browser in the form of help files.  Hey if you want to do this, do this.

And I will tell you what would be really interesting for them to do is actually keep stats and who clicks what in the help files, and look at what people are searching for in their own help files. 

Keep track of that.  Yeah its great that I get my crash logs stuff reported back to Mozilla or Chrome or Safari, but I don’t really... I don'’t want to crash, I would rather not have a crash, and there are still lot of things that they don'’t get sent back in terms of figuring out what my discovery process is and how to use their browser.

So it's kind of a meta-topic, but how do we know to do anything in the browser?  How do we know to do anything in software?

Manuel Lemos: Well, there are some improvements.  Well, I was not aware with that IE shortcut because I do not use Windows at least regularly.

Michael Kimsal: Yeah.

Manuel Lemos: And I do not use IE so I would not know about that, but still I think the button of reloading could show at least some hint in the tool tip that if hold the shift key you could clear the cache, could be, I think it could be more useful for that.

Michael Kimsal: It would be, but there would be people complaining that well, I don'’t understand this, and I don'’t understand that.  I would say I still maintain just put a help file.  I'm in a browser right now, and I go to help, and right we have... there is just... there nothing... there is not enough there, I should say.

And in some of this too is that I'm also using it like the help is all on their page, on their server as opposed to something that’s local, so if one of the problems I am having is network connections you know I would have a problem there, but looking at the Firefox help it actually does locate there some things here, but I would be curious to know if there is... I'm going to look here and see if I can see something for shift, I seem to shift something.

Manuel Lemos: I think Google people suppose everybody is on Google fiber with 1 gigabits network that never stops.

Michael Kimsal: I will tell you one other thing that just came up today about an hour ago, I saw this.  There was an article in Hacker News, and I send you the link to this in the chat.  And that is about Chrome, and this is a bug report.

Now someone else went back and said I can't recreate this, but someone is reporting that Chrome treats delete HTTP DELETEs as GETs so if you issue a delete to something that to the same URL that you already didn’t get to, it will return the cache result.

Manuel Lemos: Oh I see.

Michael Kimsal: And whether that one can be done or not there is a number of people complaining in the story about Chrome does a boat load of caching even where it breaks the HTTP spec, and...

Manuel Lemos: Do you mean HTTP DELETEs done from JavaScript, right?

Michael Kimsal: Yes, well or HTTP DELETE request, yeah.  

Manuel Lemos: AJAX requests

Michael Kimsal: And I think there is something their Chrome has said for years we are the fastest browser.  Well, when you excessively cache so much even to the point of breaking the specs is that a useful browser?

And for some uses it is, but that’s another one of those things from a developer standpoint I would be weary of saying I'm going to do all my testing in Chrome, and all my development in Chrome first to foremost knowing that there is aggressive caching going on if I'm trying to do complex stuff.

So and maybe I don’t know if you could add that to the show notes, but it was an interesting kind of side discussion which kind of ties in...

Manuel Lemos: Send me the link, and I will post in the show notes because... well, we know that browsers have bugs.  There is no bug free browser but...

Michael Kimsal: Links

Manuel Lemos: Even Google because Google is not god so they are allowed to have bugs in their software.  And you should not peak more on Google than on others I think my opinion just because they are wealthy, and they have trillions of developers working on their products.

Michael Kimsal: No.  But if one of their selling points, one of their marketing points is speed but if they are actually achieving that speed at the expense of following written specs, and breaking things that work at other browsers...

Manuel Lemos: That's not right.

Michael Kimsal: Yeah fundamentally Microsoft could say well, we do all of this stuff, we are great at this, but they broke basic conventions.  People ... Microsoft and said IE sucks, we are not going to use it.  Well, why should Chrome get away with the same behavior?  And I'm not saying it's necessarily on the same scale, but gone on check, there would be nothing to stop them from taking that same approach so.

Manuel Lemos: Right so you are anticipating that Google would be the next Microsoft?

Michael Kimsal: Well I think in some ways they are, but that’s probably a discussion for a different podcast. 

Manuel Lemos: I mean in the sense that because Microsoft for many years stopped in IE 6 many developers start hating them with the passion.  I mean Microsoft...

Michael Kimsal: Possibly that could happen, it could certainly happen where a Chrome is gaining a lot of users, a lot of mind share but it they don’t treat developers right, and there is going to be backlash, and that’s the same thing with Firefox or Opera anything. If somebody gains market share, but they don’t treat the developers' right, there will be a backlash.

And that it may take years for that backlash to have a strong impact.  I mean there is a big mental backlash against IE for several years, but it took years of people pushing out alternatives and getting a lot of ground support for people installing Firefox on family's machines and pushing it elsewhere on their browsers.

Manuel Lemos: And the statistics mentioned in that article pretty much show that only 7% of the developers that were consider for this statistics use IE, and but that's not because they do not use Windows. Over 80% use Windows.  So from those 80% only 7% use Internet Explorer is pretty significant, and if Microsoft did not get the message by now I don’t know if they will ever get. 

Michael Kimsal: I think they have it, and IE 9 is somewhat better.  Everything is somewhat better than one before it.  It's not just enough for them to say this version is better than the one before it. Their pace of change has to keep up with the pace of change from other competitors, but again a kind of a topic for different, I mean its web stuff, but its not quite PHP stuff.

Manuel Lemos: Well, anyway the message of the article is well on one side things are improving in Chrome in terms of the issues that were mentioned in the last year but there are still even more issues to be fixed, and addressed with more consistence that's what we hope because I want to make clear.

The article itself it's not just an exercise, a criticism.  It's just a sort of a call for help because I use Chrome. I only use Chrome.  If I have to use Firefox, it is bad for me not because of Firefox because I have to stop it to use one browser to use the other, and it's not very productive, and since I switch it to Chrome two years ago I don’t want to go back especially because Chrome is still much faster, although Firefox is still been making a lot of important improvements.  

One issue is probably not in the way the browser looks or works is the support for the SPDY protocol which is basically what we are going to get for HTTP 2.  And for years Chrome supported the SPDY protocol which makes the access to the servers, at least those that run on that protocol like those from Google, also think of those from Amazon and Twitter, and many other sites are already using SPDY.

And the access to those sites using SPDY is much faster, so a browser that does embrace SPDY will look slower, although the browser itself is not slow, its just the way the protocol works.

Michael Kimsal: Yeah.

Manuel Lemos: And but now Firefox since a few months ago has finally support for SPDY, so that perception of the browser being slow is not so much evident as in the past. Anyway the conclusion that I think of this is itself positive this competition between the browsers I think.

Michael Kimsal: Yeah.  I mean everything gets better for all of us over the long term, but we have to make... I say I run multiple browsers.  I have got Firefox, and Chrome and Safari all up right now so.

Manuel Lemos: Yeah you are having fun in context switching.

Michael Kimsal: I am having loads fun.  This is Nerdvana my goodness.

Manuel Lemos:  Nerdvana that’s good.  That's a good one.

Michael Kimsal: Yeah I don't even want to leave the chair now.  I am just...

Manuel Lemos: You are enjoying all the tabs in your desktop to switch between browsers.

Michael Kimsal: Oh man, stop, I may have to shut the camera off if you keep talking like that.

Manuel Lemos: Okay, well anyway I think this topic.  I would have a lot to more to say, but we don’t have the time, but don't know if you wanted to complement with anything else?

Michael Kimsal: About that or about something else?

Manuel Lemos: No, about this topic?

Michael Kimsal: No, this topic is one on one truly dead, yes.  We are in the end. 

Manuel Lemos: Well, actually we also covered it in the Lately In JavaScript podcast.

Michael Kimsal: But I went to different direction there, totally different direction yes.  I'm like that.

Latest JavaScript objects published in the JSClasses site (34:40)

Manuel Lemos: But talking also about JavaScript we actually this time we did not quite determine what would be the objects, classes to talk about in the next section which is about the latest JavaScript objects published it in JSClasses site, but I think...

Michael Kimsal: It's such a shame that there is not this thing this idea that we can just look at them right now.  Maybe we could schedule it for next week.  We can just go to the web site talk about something else...

Manuel Lemos: Of course we can because they are pretty much in my front and well I don’t know if would you like to start and talk about the same classes.  There are just a few publishing more since then.

Michael Kimsal: About JavaScript, is JavaScript stuff I thought you want to talk about the PHP classes?

Manuel Lemos: No.  Yeah well, usually we also cover here a couple of JavaScript classes also to encourage developers also go there.  And the idea it's just that you can just if you would not like to pick others you can just talk about the same very briefly.

Michael Kimsal: I will mention one that I actually having the demo above right now.  Well, this was what I talked about before.  I am going to share my screen yo-ho, can I call you... I shouldn’t call you that's rude, isn't it?  That is so rude of me. Why... come on I said share the screen share.  Why does it go away?  Screen share, yeah, there we go.

Manuel Lemos: Yeah its one of those bugs of Chrome.

Michael Kimsal: Okay I have clicked it, share selected window.  Here we go.  This is Image Cropper from Daniel Martinez in Espanol.  Hola Daniel.  Standard, I mean its standard not that oh, like you should not know how to do this in two seconds, but the standard come in UI if I need to move this around.  I need to shrink this, and you can move around, so you can... it grays out or darkens the image behind as you can see the image upfront, and then you can get the values here as a JavaScript array or a JavaScript JSON structure.

So it’s a basic piece of functionality, but its actually something that you don’t get in the lot of JavaScript toolkits or GUI toolkits, so if you needed to build this yourself you already got a class to do this.  And its... I am no expert in this, but it did appear to me to be cleanly written, and understandable, so that would be one of the things I would point out from this.

Manuel Lemos: Yeah so it's very useful for many purposes, now that everybody is accessing sites that need to use pictures, but sometimes it need to be of the specific size and I think that the component also allows you to restrict the size that is into...

Michael Kimsal: Yeah go over certain yeah so yeah.

Manuel Lemos: So I think it's useful also for that purpose.  And other than that any other class that you would like to mention?

Michael Kimsal: I probably cannot remember enough for what I talked about before so it could be just that. 

Manuel Lemos: Well, okay.  We also do not have that much time, but I will try to mention couple two more.  Let me screen share here.  One is from a Pavel Kukov from Bulgaria.

And this is actually a component that has two parts.  One JavaScript part, and another is a PHP part, but the JavaScript part what it does is basically to let you set, get and delete the cookies, values stored in cookies except that you can store multiple values in a single cookie.

And the value itself can have types so we do not lose the type of information like when you store some value in the cookie that always is stored as text.  And this component from Pavel is useful for some of the reason you can only use one cookie to store the values.

And then there is the PHP component that the publishing PHP classes site that does the other part which is to the code, and also set, get and delete the values on those cookies but on the server side.

And the other component that I will like to mention is new component just published by Nguru Mugendi from Kenya. And I always like to highlight when people from Africa are participating because it's not an usual type of participation.  Unfortunately, there are not many developers from African countries, so I also I will like to highlight that just to encourage more and more from that region because there is nothing specific about it that prevents to have great developers from there.

And in this case the Nguru, I am not sure I am pronouncing this right.

Michael Kimsal: I think that’s right.  Pronounce close. 

Manuel Lemos: I'm sure its wrong, but okay, and basically what he developed it’s a plug-in that can show you certain elements that appear tiled on your user interface.  And then when you click on them, let's see if I can show you a site that shows that effect,  it slides the element and expands with some content, and you have these close buttons that you can shrink back.

And it gives a nice effect that can cause a good impression if you have one of these components in your sites. It's not exactly original.  There are similar components for this purpose, but this one gives a good look to your sites, and that could from Nguru for this contribution.  

Michael Kimsal: Thank you, yes.

PHP Programming Innovation Award winners of May 2012 (40:57)

Manuel Lemos: And well but moving on now I would like to talk about the latest nominees. Actually I already announced the results in this case for the Innovation Award in the PHP classes siteof the components that were published in May they are voted in June, and then in July it was the announcement of the results.

Michael I am not sure if you are accessing this page I wonder if you like to pick a couple to talk about.

Michael Kimsal: Well I am actually looking at multi-threading one right now.

Manuel Lemos: No, it's probably... well it's in the winners page.

Michael Kimsal: Oh I'm sorry. Your page went away for a bit.  No, I'm not looking at that.  Let me pull up.

Manuel Lemos: Its . Well while you pick yours result and can go ahead it, and choose some I would like to highlight.  Well this time we had six nominees, and I like in particular this one from the winner Tom Schaefer, he has been a regular contributor.  He publish many components, 31 so far.

And he had been nominated like eight times, and this time there is he finally won, and I think it was deserved because this is a useful component to work with MySQL Workbench program.  It outputs a file that defines the schema of your MySQL database.

And what Tom developed was a component to convert the output of MySQL Workbench format into a more usable format that you can use to eventually convert your schema to do anything useful like installing the database schema. And this is great contribution from Tom so kudos to in for this contribution.

Michael Kimsal: Another one here that's caught my eye which from Muhammad Arfeen is the BASIC language Parser.  Wow, and man...

Manuel Lemos:  You went back on time. 

Michael Kimsal: What?  Yeah its taking me back just to see that wow.  And probably...

Manuel Lemos: Bill Gates is alive.

Michael Kimsal: Well it's... to look at this old syntax again yes I wrote programs that use that.  I mean if then else yeah we understand that, but this is just kind of the basic syntax.  The basic, BASIC syntax it just bring back a lot of memories.

And what's funny to me now is looking at this, I'm not trivializing what Muhammad has done but I understand enough about programming that I follow the class.  I can understand what he is doing, how he is doing it.

And I could probably write something similar now, but I wouldn’t be able to write it in Z80 assembler or whatever it was that these people wrote these things back in the 70s, so its really easy to look at it when you are looking at PHP source code to say well here is how to PARSE out this string and here is how that say is it this token or that token, it's if not trivial its certainly easy to understand.

But I look back and think well gosh people did this in like 1K of assembly code back 40 years ago, so its just took me back down memory lane to a simpler time, a gentler time.

Manuel Lemos: Yeah so you had the nostalgic moment?

Michael Kimsal: Yes I did, I did thank you Muhammad.

Manuel Lemos: Yeah and well although it is a parser of various small subset of a BASIC is very powerful many commands. 

Michael Kimsal: Yeah.

Manuel Lemos: Well I think JavaScript is the basic of the modern age, and...

Michael Kimsal: Yeah.

Manuel Lemos: Although the languages are different, the purpose of simplifying programming it's interesting. Although I do not see much use for a basic interpreter these days its still interesting to see these components.

Michael Kimsal: No, but it kind of touches on a larger topic of DSL, Domain Specific Languages.  I am not suggesting that necessarily this basic language parser would be something you would want to use in business production, but it should give you some ideas that you can give people tools to express themselves in with particular domain syntax and parse that out into your own language of choice.

So I that in of itself is a very hot topic and a very powerful topic in a lot of businesses, so if something like this was to inspire somebody to look more at what are DSLs, how would I write them, how would I incorporate them I think that has long term merit.

Manuel Lemos: Now after all we could build a DSL, for those that are not familiar we build with Domain Specific Languages, those can be used to sort of script applications for the specific tasks.  Okay any other class that you would like to mention?

Michael Kimsal: Well, the two kind of jumped out at me, and not so much for the code, but more just for the fact that they are similar, Web Thumbnail and GrabzIt, both of these are classes that make API calls to web services that grab screenshots.

I don’t know if there is just a big call for that still these days, or if it would just happens to answer that happen but it kind of caught my eye there were two different libraries that do similar things there.

Manuel Lemos: Oh well, actually I think there is a great demand for this type of classes because these are not really innovative on purpose just in approach. There were I think a few published before that would allow to capture screens from browsers, but they use the like browser APIs to actually capture the screens.

I think there is one for IE and another for Firefox and probably another that relies on GTK with something that probably only run on well on Linux.  Anyway these two actually they are very similar, they just to use a different web services for capturing the screens. 

Michael Kimsal: Yeah.

Manuel Lemos: But they do basically the same, but since they were published on the same month day or was nominated and there well, that is basically it. I just like to also mention one more. Actually there were six. I like to mention the jForm Validator which is sort of a different way from to define a validation rules for forums in this case on server side.

They use the HTML templates of the forums and they parse them to extract elements of the rules. In this case jForm validator was developed by Jonas Lagerwall from Sweden. It is an interesting way, although I am not sure if its mixing the logic with the output template in the same file is a good idea, but its still an innovative approach.

Other than that there was the only that we did not mention. Actually  we mentioned before, SCSU, because it was a class that also as a JavaScript version published by Alexey Znaev from Russia and this one is the PHP version of the other one that was published in JavaScript.

Well, on this part of the innovation award I would just like to mention very briefly let me see if I can go back to the screen, stop the screen sharing here because sometimes it does not work very well.

Okay well, as you may have noticed on the set there are here some elephants.  This is the newer version that just arrive a set of packages with lots of elephants and this one, this is the new version this is the design.  Let's see if I can put it let me go...

Michael Kimsal: That's close enough.  Yes.

Manuel Lemos: Can you see it well?

Michael Kimsal: I can see it.

Manuel Lemos: That it has the PHP logo.

Michael Kimsal: That's cute.

Manuel Lemos: And this one is the version that from now on that the PHP classes site will give away to the innovation award winners in the case the year award after summing all the points next year.  The winner will get one of these.

Actually the past year winner which will get the prize this year, Richard Keizer, I mentioned about his work in the previous podcast, will also get to one of these, as well the five top ranked winners of the JavaScript Innovation Award Challenge that is going on and that it will last until just the site reaches 200 packages.

After that the Innovation Award will be started in that site. So as a encouragement that there is this preparation phase on which as encouragement to developers that submit interesting JavaScript classes there is this prize for the top five winners.

It’s a bit odd giving away a PHP related prize to JavaScript developers, but unfortunately, as far as I know, there is no mascot for JavaScript so.

Michael Kimsal: That's your job to make one.

Manuel Lemos: Yeah I am thinking about hiring Ifat. Ifat Amit is the designer that created this elephant.  A lot of people like them.  I hope this first release of the mascot in plush will look fine. Michael yours is in the mail.

Michael Kimsal: Thank you so much.  Merci. Danke Schoen.

Manuel Lemos: I hope you will exhibit it with pride.  It's just a symbolic prize that I would like to give it to you.

Michael Kimsal: No it’s a real honor.  Thank you.

Manuel Lemos: For being such a enthusiastic...

Michael Kimsal: And good looking.

Manuel Lemos: That too of course.  

Michael Kimsal: Yeah.

Manuel Lemos: And that's would be the opinion of your wife of course.

Michael Kimsal: No.

Manuel Lemos: And all those millions of fans of course.

Michael Kimsal: Yeah.

Indieconf 2012: The Independent Web Freelancers Conference (53:10)

Manuel Lemos: Well, and anyway I would like to just conclude this podcast.  I think you Michael you would like to talk also about an event that you have been organizing, is growing every year I think IndieConf, right?

Michael Kimsal: Well, that's the hope.  Yeah Indieconf is conference for web freelancers.  I say web freelancers, its designers, developers anybody in between.  If you make a living on the web full-time or part-time or you are interested in it, we want to have you.

The focus of last couple of years has been people like me who are primarily developers of some sort but we've had people who are writers.  We've had sessions on publishing.  We do a one day conference and we've got some tech, we've got stuff, but it's all largely about sessions and people, and lessons to help you get better at running your business whether its marketing or legal or financial or business.

The tech stuff some of that. But you know how to connect with the database?  You know how to put something on the screen with JavaScript, and if you don’t you probably know where to go.  You probably have a harder time figuring out what how should I write my contracts and things like that, so that's been the motivation behind  IndieConf.

And actually the next two weeks through August 15th, we have a call for papers open the conferences November 17th in Raleigh, North Carolina. So we are looking to get the number of speakers and we have not quite, we are going to have probably 20 or 21 different sessions and as it stands right now we possibly have the mall filled, but I would rather get more topics in so that we have a better choice to select from.

Manuel Lemos: Yeah this seems to be an unusual type of conference right?  It's for developers, but it's not so much about development, but more about...

Michael Kimsal: Yeah and its not specifically... it's not just for developers, be a graphic designer, we've had people who are primarily front end CSS people or graphic design people and they work for themselves, and they have the same kind of questions that we are all on the web creative space whether you are creating databases or you are creating something else, but we are in this space.

How do you find work? How do you find people that you could subcontract work to? How do you write contracts?  How do get paid?  How do you avoid getting stiffed all of these things are very common to people who work with themselves, so that's really what the conference is about.

Manuel Lemos: Alright I think its so far valuable to...

Michael Kimsal: I think so.

Manuel Lemos: Well, talking about the values, do your early bird fees?

Michael Kimsal: Right now the early, early bird through right now probably through the call for speakers it’s a one day event, it's $79 after that its going to go up to $99 then we will have that's kind of traditional early bird up through probably end of October and then it will go to 129 for the strike ways but...

Manuel Lemos: And it doesn’t seem to be expensive right?

Michael Kimsal: It's not, and actually last year, where the first year these are the prizes from two years ago.  We had last year, we bumped the prizes a little bit.  I bumped them down a little bit this year.  You know next year we may go higher again because I think and especially for people if you are coming in from out of town, if you are flying, and driving and getting into the hotel whether it’s a $100 ticket, or $150 ticket probably doesn't factor that much into a $300 plane ticket and then a couple of $100 in the hotel its not that much of an issue.

I think but that said I would rather try to keep this low especially from people that are... if you are thinking of may be you are not happy and you are thinking of going on your own or you are looking at doing freelancing part-time this is not the sort of conference where hey my company will send me and its $1200, you know fly me out to scoring it or something its --

Manuel Lemos: independent developers?

Michael Kimsal: It's intended for people who are self-employed, and I am, so I try to keep that in mind that you are fitting the bill for this.  I am trying to make it as affordable as possible. 

Manuel Lemos:  Right well, I think that is great, and I think you are right on because there is a demand for that, and in the end hopefully more professionals who will learn about making more money more efficiently, and I think that is the value that I see in your event, so congratulations for the idea.

Michael Kimsal: Thank you.  I mean gracias.  That's I know that's Spanish you speak Portuguese, but whatever. 

Manuel Lemos: Well, one day you will get it right.

Michael Kimsal: No probably not.

Conclusion (58:06)

Manuel Lemos: Okay that's fine, well we had a great show this time with special K.  Michael, I thank you very much for coming.

Michael Kimsal: Thank you.

Manuel Lemos: This time sort of came to fill the space of Ernani that is a bit sick. 

Michael Kimsal: Get well Ernani yes, get well.

Manuel Lemos: But you are always welcome to give your insights here because I think even before you were a JavaScript developer you were a PHP developer, right?

Michael Kimsal: Oh yeah I've been PHP for too long, so.

Manuel Lemos: Yeah well, may be next time we have also have more time to talk about other interesting work of yours like JSMag magazine, but for that for now people can listen also to the Lately in JavaScript broadcast. So for this episode on my part I think that's all for now.

Michael Kimsal: Sounds great.

Manuel Lemos: Bye.

Michael Kimsal: I will talk to you later.  Bye.

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

Login Immediately with your account on:


No comments were submitted yet.

  Blog PHP Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog Accelerating PHP 5.4 ...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)