Archive for January 2009

Stop Asking, Start Helping

Full disclosure: I’m not on the internals team. The topic of this blog post just happens to push my buttons and I want to be able to point people to a URL rather than answer the question over and over again.

A question that seems to be popping up more and more these days is, "When will PHP 6 be released?" It’s especially annoying because the people that enjoy an exercise in futility ask this question are the same people that simply refuse to take WIR for an answer. Or maybe they just read into the hype generated by trigger-happy publishers who want to preempt a stable release, I don’t really know.

There’s been no alpha or beta release of 6; it hasn’t moved anywhere outside of the CVS repository yet. I would think that would provide some indication that 6 is still a ways off. The feature freeze for 5.3 was originally set for 7/24/08. The first beta release only came out this week. This is all public knowledge and I think a pretty good indicator of the speed at which the landscape is changing.

Given what was originally planned for 6 and how much of it ended up in 5.3, the 6 envisioned today could be worlds away from what actually ends up being released. Take a look at those TODO lists; the amount of work left to be done is anything but trivial. The internals team is not a corporate entity and its members are not compensated for their work in any way. They are volunteers and most work on PHP when they’re off the clock from their day jobs. This limits how quickly progress can be made and how accurate estimated release dates can be. So respect them and their time and stop asking when it’s going to be ready, because they don’t really know much better than you do.

Another thing: PHP is server-side software. It’s not a new web browser coming out where the user may or may not upgrade when you have had time to adapt your application to work with both the old and new versions. No one is forcing you to upgrade the installation you use internally. If you have customers that maintain their own PHP installations, don’t feel pressured to be on the bleeding edge just because they want to be.

Be sensible: don’t lag more than two or so minor point versions behind the current stable offering, don’t immediately upgrade to a brand new stable version, and have automated tests that can be run against release candidates so it’s easier to discern issues that might arise when a stable release does come out and you want to upgrade.

If you really want to be prepared, there are several things you can do. Keep tabs on the accepted and implemented RFCs to see what features are being added and what effect, if any, they have on BC. Search the bug tracker for issues reported and fixed in the branch relevant to you. Don’t limit yourself to testing new versions with your own test suites, but help to write tests for PHP itself to ensure that new versions are as stable as possible. These will make your time much better spent than asking a question that has no definitive answer. And it will keep the rest of our blood pressures all the lower for it.

New Article Published

Just a quickie to mention that the January 2009 issue of php|architect magazine has an article by yours truly on my experiences in taking the Zend Framework Certified Engineer exam and that I was also among the Technical Editors for the issue. I’m very glad to have contributed in my own small way to the continued success of the most awesome professional PHP publication in the industry. Grab your copy today!

Running Spaz on Ubuntu Ibex 64bit

It took some digging to find it, but I finally found a way to make Spaz work on the Ubuntu Ibex installation on my Sony Vaio VGN-NR298E (with an Intel C2D 64bit processor). Up until I figured this out, I had been getting nothing but a non-responsive black box when I tried to launch Spaz.

Most of this comes from this tutorial on getting Twhirl and other AIR-based apps running on Ubuntu 64bit.

  1. Start by creating a new directory and and making it the current working directory. I just called it “Software” in my case.
    mkdir Software
    cd Software
  2. Install the AIR 1.5 SDK for Linux.
    mkdir air_1.5_sdk
    cd air_1.5_sdk
    wget -c http://airdownload.adobe.com/air/lin/download/latest/air_1.5_sdk.tbz2
    bunzip2 air_1.5_sdk.tbz2
    tar -xf air_1.5_sdk.tar
    rm -f air_1.5_sdk.tar
    cd ..
  3. Install Spaz.
    mkdir SpazAIR
    cd SpazAIR
    wget -c http://funkatron.com/getspaz
    unzip SpazAIR.air
    cd ..
  4. If you’re running 64bit, install the getlibs installer so you can easily get 32bit versions of libraries that AIR needs. Otherwise, skip this step. I believe the KDE equivalent to the libgnome-keyring0 package is kdewallet. Both should be installed by default on 32bit systems.
    wget -c http://www.boundlesssupremacy.com/Cappy/getlibs/getlibs
    chmod +x ./getlibs
    ./getlibs libgnome-keyring.so.0 libgiogconf.so libgvfsdbus.so \
        libgioremote-volume-monitor.so
  5. Launch Spaz from the directory created in the first step.
    air_1.5_sdk/bin/adl -runtime air_1.5_sdk/runtimes/air/linux \
        -nodebug SpazAIR/META-INF/AIR/application.xml SpazAIR
  6. I didn’t find the default font used in the main tweet area to be very appealing, so I added this line to the User Theme CSS area of Settings.
    div.status-text { font-family: Tahoma; }

The only issue I ran into was receiving this error whenever I try to post: “An ActionScript error has occurred: Error #2044: Unhandled IOErrorEvent:. text=Error #2032: Stream Error.” Oddly, it doesn’t prevent posts from going through, though it is rather annoying. I have brought it up in a Spaz Google Group thread and hope to work with the developer to troubleshoot the issue further at some point in the future.

php|tek 2009 Webcast Series

Probably should have lumped this in with my last post, but it’s a rare convenience that related thoughts like these all occur to me at the same time. Another event related to the php|tek 2009 conference coming up in May is a free webcast series for which I have been invited to present.

Webcasts will be held roughly every two weeks leading up to the beginning of the conference. I’m scheduled for Friday February 27 at 1 PM EST and my topic will be "When RSS Fails: Web Scraping with HTTP." Participation is free, but the number of participants is limited, so register early. Note that participation requires a machine running either Windows XP or higher or MacOS X 10.4 or higher. Look forward to seeing you there!

php|tek 2009 Hackathon

Planning on attending php|tek 2009? Think you might like for a Hackathon to be included in the Unconference? (Or want to know more about what such an event would entail?) Please visit the tek09 Google Group Hackathon thread and post your comments and suggestions. Also, please use the address http://tinyurl.com/tek09hackathon to help spread the word! Look forward to receiving your feeback.

Another Year, Another Summary

In seeing several people doing the year’s end blog post thing, I decided to take a look at my post from last year and follow suit with one for this year.

First, I thought I’d look at the list of goals I set for this year and see how I did.

  • Fail: I ended up leaving my job in Baton Rouge and also withdrawing from BROUG due to other commitments, so I wasn’t able to get very far into my term as their VP.
  • Draw: I did read and write a review for one book, though it wasn’t in my existing backlog. I managed to read or at least skim through most of The Pragmatic Programmer and blog about it several times. No other reading to speak of, though.
  • Win: I submitted one paper for OSCON that was rejected, then submitted four for ZendCon and got one accepted. I gave one of the others as an uncon session.
  • Win: The aforementioned book review was also released as a PHP Abstract podcast episode. While it hasn’t been published yet, I do have another magazine article coming out next month that I wrote this year.
  • Win: Part of the reason I haven’t done more in the way of podcasts and articles is that I did get a publishing deal and find myself a technical editor. I’m in the ever-so-slow process of writing the book now. I’m hoping it will be out in the first half of 2009 and will post updates here as they arise.
  • Fail: While I did get initial code and unit tests developed for Zend_Service_RememberTheMilk, the unit tests I did ended up needing to be refactored to use local static files representing expected web service responses. In short, my interest and energy levels were depleted before that portion of the project was completed.
  • Win: I did migrate my blog to Habari. I can’t say it’s been entirely stable (though it’s admittedly still pre-1.0) and without issues, but the ride has been interesting nonetheless. I may look migrating to something else later depending on how Habari does. WordPress seems to be improving, so maybe I jumped that ship too soon.
  • Fail: No developments on a content management project yet, just ideas floating around. I may get around to it eventually, but for the moment I’ve got enough other projects keeping me busy.
  • Fail: The local music scene web site project never got rebooted either, again due to lack of time and interest.

So 4 wins, 4 fails, and 1 draw. At least I broke even. I also did accomplish a few things that weren’t originally on my list.

  • I had a large hand in rebooting the Acadiana Open Source Group, a local agnostic open source software user group. It’s had monthly meetings almost every month since April and I consider it a fair success.
  • I was present for the first public offering of and among the first to take the new Zend Framework certification exam. Though it was rather last minute that I was able to get a slot, happily I was able to pass.
  • I switched jobs twice. The first change was to surgiSYS, LLC. I enjoyed my work there and later made the difficult decision to leave for other opportunities at Blue Parabola, LLC, where I’m currently working and having a blast.
  • I attended php|works and PHP Appalachia both for the first time. Both were immensely fun and informative events and I hope to continue my presence at both next year.
  • I’m now a technical editor for php|architect magazine. So, if you submit an article for the magazine, chances are you might be working with me to polish it up before it goes to print.

And I’ve got an updated goal list for this year, of course.

  • Finally finish my book and hold a published copy in my hands! (And hopefully get requests to sign a few. Hey, a guy can hope.)
  • Continue this year’s success of the Acadiana Open Source Group and become involved in other technology and social media related events in the area, such as the TechSouth conference.
  • Publish another magazine article. PHP podcasts, it seems, are going the way of the dinosaur. The two most well-known, PHP Abstract and P3, haven’t published episodes in a few months.
  • Get accepted to speak at another conference. It’s looking like php|tek is going to be a bust for me this year. I submitted three papers – web scraping, IRC bots, and a repeat of my Zend Framework web services talk. The conference lineup does look really good, though, so I do hope I get to attend. If I do, I’ll probably do a BYOL Phergie hacking session for the uncon. (And hopefully Phergie will be to 2.0 stable by that point.)
  • Get a new non-PHP certification, likely MySQL CMDEV.
  • Finally get around to reading Sara Golemon’s Extending and Embedding PHP and a Christmas present from this year The C Programming Language from K&R so I can contribute to PHP in some way, be it internals or PECL.

So, I hope your New Year was as productive or more so than mine, and wish you all the best in 2009. Happy New Year!

Seven Things – Tagged by Keith Casey

My Blue Parabola colleague Keith Casey decided to pull me into one of those viral tagging games. Since my blog has been building up a little dust lately between my Blue Parabola blog posts and my book, I decided to kill two birds with one stone by obliging him and freshening up my landing page a bit.

So, onto the seven things you may not know about me bit.

  • I used to play the flute. I did it all through middle school and then my freshman year of high school. When I was about to enter middle school, I was brought along with a group of new students to a table to sample the various instruments that were available to me and selected the flute because I liked the sound. The time commitment and demanding activities involved in the high school marching band lead me to abandon it. I continued to play here and there for church and the like, but haven’t picked it up in years. Currently, I can strum a few guitar chords and aspire to one day pick up drums and piano.
  • Web development was my bread and butter through most of college. In 2001, I landed my first job with a small web development group within Gannett tasked with creating a custom CMS for news publications within the state. After being there just under a year, I moved on to work for a web development company for three and a half years and finished off my degree working for an education-focused non-profit for a year before finally graduating at the end of 2006.
  • My Bachelors Degree was in computer science. OK, maybe most of you already knew that. My concentration was video game design and development. There, is that better? I started out in information technology, moved onto cognitive science, and then finally finished out in video game development only a few semesters after the concentration first became available. My interests have been more prevalent toward web development and I haven’t really touched game development since I left school.
  • I have a black belt in judo. Between ages 12 and 18, I was actively involved in a local club and took my shodan test shortly after graduating from high school (the minimum age to test was 18). At one point, I held certifications to referee at local tournaments and teach several kata forms. I acted as a coach in my club during my last few years of high school. My mother and brother were also in the club with me and some of the fondest memories I have from my teen years are of times we shared there.
  • While in judo, one of my better known talents was jumping over people. One of the skills practiced in judo is break falls, which are generally used to take falls without injury while practicing throwing techniques. One of its more "flashy" applications for the purposes of demonstration is leaping over a group of people arranged in a line and falling safely on the other side. My records were three standing men of roughly equal height and ten preteen kids sitting cross-legged. I was often referred to as being "half gazelle."
  • I originally met my wife when I was 12. Want to guess how we met? The judo club I just mentioned. At the time that I started, she was 16 and an orange belt. She was in a car accident shortly thereafter and was out for six years. When she finally came back, I was 18 and a black belt. The first words I ever said to her (after listening to her babble for three weeks straight in determination to befriend me) were "Do you ever shut up?" (No, I’m not kidding.)
  • During college, I grew my hair out to shoulder length. My parents always had me cut my hair before it got to be very long. While I was in high school, it was also against school policy for boys to wear their hair longer than a certain length. Once I was in college, I decided to try it just to have the experience. I cut it short again shortly after Hurricane Lili left us without working air conditioning for a week. While I’m glad to have done it, I don’t expect to repeat the experience in the future. Related photos are probably buried somewhere and I’m too lazy to go digging for them.

And now onto the fun part where I get to tag seven other people into doing this.