Archive for February 2008

Meet Phergie

At one point not too long ago, I told Ben Ramsey about an idea I had to write a PECL extension that wrapped the libircclient library in an OO API. Serving as a good catalyst to get me working on the project, he registered it as a SourceForge project and got a good foundation checked into SVN. I’ve managed to make a few small contributions here and there to the code base and ideas for the userland API. Still having limited knowledge of C and the PHP engine, I thought my efforts might be better put toward a project that could use the extension once it was released.

So I decided to try my hand at writing an IRC bot in PHP. Most tutorials I’d found on the subject barely covered the tip of the iceberg, only showing what anyone with a copy of the PHP manual and the IRC RFC could figure out in the time it took to read the tutorial. Additionally, I could only find two existing packages that were relatively well-developed and outside of an alpha state.

The first was PEAR::Net_SmartIRC. It is PHP 4-based (not good considering the upcoming PHP 4 EOL), hasn’t seen active development in three years, and I don’t particularly care for the priority system it uses to order event handler execution. The second was PHP-IRC. It is PHP 5-based, has an OO API, and is more full-featured. However, it doesn’t appear to have seen active development in two years, has no online documentation viewable via a browser, and has a rather paltry plugin selection.

I had toyed with some previous iterations of Phergie, some Python-based and later some PHP-based, before I finally got an API design I was happy with. At the suggestion of a fellow IRC mate on Freenode, I registered the project on Assembla so that it now has a Trac site as well as an SVN repository. It’s been through a few releases already and, though there are still plenty of open tickets for improvements and additions, it’s becoming a fairly well-rounded package. When the PECL extension is released, I will be able to write a driver for Phergie to wrap it and provide an alternative driver to the single streams-based driver that is currently available.

I’m considering writing an article on my experiences, one that I could potentially pitch to several sources for publishing, either online or in print. It’s more of a recreational topic than a professional one obviously, given the nature of the usage that IRC sees these days, but I still think it’s an interesting topic nonetheless and can actually encompass more “enterprise-level” solutions than one might realize. So, stay tuned.

Update: I completely forgot to throw a shout out to Jordi Boggiano (Seldaek to those of you on Freenode). Without him, most of the plugins that the project now sports would never have been written. I also neglected to mention that we have an IRC channel on Freenode, #phergie. Feel free to join in on project-related discussions there. Chalk a few up to me being silly enough to trying posting while being sick as a dog.

New Job

I’ve been working full-time for METHODS Technology Solutions, Inc. for roughly a year at this point. My coworkers are bright and insightful, the environment is relatively lax, and the job has had its share of challenges. Oracle, while I like it well enough as a database, has not proven to be my development platform of choice. The commute and unpredictability of traffic tends to make for long days and more time away from my family. In short, while it was certainly a good job and I’d highly recommend the company as a potential employer to anyone who asked, it wasn’t the best possible fit for me.

So when I received a copy of an ad placed by surgiSYS LLC for a LAMP Developer, as hesitant as I was to change jobs, I went ahead and sent in an inquiry. Two interviews later, I received an official offer, accepted, and turned in my notice. I will officially start there as of February 18th. The company has a Lafayette office right next to the university my wife attends and where my children attend daycare. It will give me the ability to be closer to my family than I’ve been able to in some time.

Some of my goals involve continuing to attend conferences, get published, and stay active in the PHP community. Because these goals are very relevant to my performance at surgiSYS, I believe they’ll make it a point to support me in my endeavors. The LAMP platform was always my first love and I’ll be happy to return to it. I look forward to the changes and challenges this will bring and I thank my family and friends for their support in making this decision. Wish me luck!