Laptop with PHP code

Announcing PHP TestFest 2017

For those who’ve been around the PHP community for a while, you’ll recall the successful PHP TestFest events that began after a discussion at PHP Quebec in 2008. Many user groups and mentors signed on to host and help with events, and a lot of folks became first-time contributors to the PHP project, helping improve our code coverage. It ran strong in a global sense from 2008 to 2010. After that, various groups (particularly the Brazilian groups) have continued the tradition.


AWS re:Invent 2016

Building PHP Projects on AWS CodeBuild

At AWS re:Invent, Amazon announced a new service for building and testing code: AWS CodeBuild. They provide managed environments for Android, Java, Python, Ruby, Golang, and Node.js. While PHP is missing, it is possible to build PHP projects using the service. Follow along to find out how.

phptek group photo

7 Tips for php[tek]

This week, I’m attending php[tek]. This is my seventh php[tek], and the first I’ve attended not as a speaker. It’s one of my favorite conferences, and I didn’t want to miss its first year in a new city: St. Louis. As we gear up for the eleventh php[tek] conference, I thought I’d list my seven tips for getting the most out of your php[tek] experience.


Mastering OAuth 2.0 Published

I’ve published my first article in php[architect] magazine since 2009! It’s only fitting that it’s an article on OAuth 2.0, since one of the last articles I published in their magazine was on OAuth 1.0. I’m proud and excited to finally publish a new article with them after such a long hiatus, and I hope my next article doesn’t take seven years to write.

Github stickers

Post-Open Source

I’m a tad late to this discussion, but I think it’s still pertinent today—perhaps even more so—and Jordi Boggiano’s recent post, “Common files in PHP packages,” got me thinking about the lack of open source licenses in public repositories.

The Boys With The Striped Pyjamas

Introducing ramsey/uuid

It seems quite absurd for me to introduce ramsey/uuid, a library that saw its 1.0.0 release on July 19, 2012, and is now at version 3.4.1, having had 35 releases since its first, but what’s even more ludicrous is that I haven’t once blogged about this library. I mention it only in passing in my “Dates Are Hard” post. So, allow me to introduce you to perhaps a familiar face, an old friend, the ramsey/uuid library for PHP.


Hour of Code at Chattanooga Public Library

Hour of Code

I volunteered to help with an Hour of Code during Computer Science Education Week. This is my story, with a few tips to help when you volunteer.

Yaks on the Tibetan plain

Yak Shaving Is the Entire Job Description

A recent struggle to solve a programming problem reminded me that yak shaving isn’t just part of our jobs, it’s the entire job description.


Lack of Hypermedia

One of the most common problems I see in API development is lack of hypermedia, or none at all.

Día de muertos - D.F.

Día de Muertos

Remembering PHP community members who have died.

Downtown Chicago

Chicago PHP First Met in 2000, Not 1997

For many years, I’ve claimed that Chicago PHP held its first meeting in February of 1997. Unfortunately, I was wrong.

A conductor conducting an orchestra

Composer: Missing Distributions For Explict References

I prefer to hard-lock Composer dependencies for non-distributed apps, including hard-locking to a specific commit. Today, I encountered a problem…

Nashville PHP members with PHP cake

Reflecting on PHP at 20

In this post, I discuss my InfoWorld article, @phpc’s timeline, #20yearsofphp hashtag, PHP cake, and community posts reflecting on 20 years of PHP.

A birthday cake with candles spelling "Happy Birthday"

20 Years of PHP

Twenty years ago today, Rasmus Lerdorf released Personal Home Page Tools (PHP Tools) version 1.0 to the world. I first encountered PHP in early 2000…


Fun Recruiter Messages

Earlier today in the #coderabbi Freenode IRC channel, we were discussing recruiter messages. I thought I’d share one of my favorite gems from over the years.

A collage of screenshots of my website through the years

Website Redesign

I’ve fully redesigned my website and have added more content. In this post, I explain why and how.

A photograph of chairs in a university lecture hall

My Failed Attempts at Soft Skills Talks

In 2013, I began crafting soft skills talks as a return to the PHP conference speaker circuit, but I learned I wasn’t suited to deliver these talks.


A photograph of a hand scribbling out the "not" in "cannot"

Learning A New Codebase

What can developers do during the interview process to get an idea of the kind of codebase a company has? Here are a few tips I think go a long way in helping determine the state of a company’s codebase.

A photograph of a developer in front of a monitor displaying code

Setting Up Jenkins on Amazon Linux for PHP Testing

One of my first tasks at ShootProof was to set up a Jenkins server for continuous integration and get it ready to run unit tests for PHP and JavaScript code. There are plenty of tutorials around the web to help you do just that. This is yet another one, but it’s primarily my cleaned-up notes—and less of a tutorial—placed here for my future self to find and provided publicly for all to benefit.

Elements of photography: photographs, lenses, iPhone with gallery

My First Month at ShootProof

My first day at ShootProof was July 1st, and as I’ve come to my one-month anniversary with the company, I wanted to share some of the reasons that attracted me to ShootProof and why I’m still excited about it, after a month of working here.

Photograph of a bud about to burst forth into leaves

All Good Things…

I’ve spent the past four-and-a-half years at Moontoast. It has been an excellent ride, but it’s time for me to move on.

Photograph of keys

Will Encryption Catch On With Keybase?

Encryption is hard, and the difficulty barrier keeps us from adopting it. I hope Keybase paves the way to making encryption easier for us all, from the technologically-skilled to the technologically-challenged.

Photograph of Prague's astronomical clock

Dates Are Hard

I recently encountered an issue when calculating the time for an RFC 4122 UUID that had me questioning the accuracy of our modern, accepted calendars, especially with regard to the days of the week on which our dates fall.


Photograph of a golden pear with an autumn leaf

The Fall of PEAR and the Rise of Composer

In just a few short years, Composer has revitalized the PHP community and changed the way we do development. Composer is what PEAR should have been.

Photograph of ramsons (wild garlic)

Wild Garlic

We were finishing up lunch at ZendCon in 2008, when I became the infamous Wild Garlic.


Contributing to PHP Core

I’ve been accepted to speak at ZendCon this year. One of the three talks I’ll be presenting is a new one: “Contributing to Core: My Journey to Add array_column() to the PHP Core.” While PHP conferences sometimes include talks or tutorials on creating PHP extensions or the intricacies of the PHP internals, I’ve never seen a talk about one’s personal experiences contributing to core, from start to finish, and how one would go about getting started. That’s what this talk is about.


The array_column() PHP Userland Library

Earlier this year, I wrote about how my patch for array_column() was merged into the development branch for PHP 5.5 in preparation for the beta release. I received a lot of great feedback and many kind words. Then, on June 20, the PHP team announced the general availability version of 5.5.0. With that, array_column() was released to the world for general use.


Introducing array_column() in PHP 5.5

Earlier today, David Soria Parra declared a feature freeze on PHP 5.5 and tagged php-5.5.0beta1, but not before merging in pull request #257, which includes my humble addition to the PHP programming language: array_column().


Ideas of March

Twitter pretty much killed blogging for me. When I signed up for the service six years ago, I was blogging quite a bit, but Twitter’s rapid-fire, ultra-short status updates have given me a 140-character attention span. Not only did I stop blogging, but I stopped reading blogs, too. Reading and writing became a chore. While I could fire off a message on Twitter within minutes or seconds of crafting it, blogging was an endeavor that took much longer—hours or even days, at times.


Writing an Effective Talk Proposal

Earlier today, I was asked “Any tips on how to write a proposal for a major conf?” I’ve never shared tips on this, and since the calls for proposals for Sunshine PHP and Midwest PHP both end tomorrow, I thought it would be a good idea to share my approach to writing conference proposals.


The Era of PHP Testing

Over the past decade, the PHP community has progressed through a handful of distinct eras that have each been marked by a focus on specific best practices. This is most evident in the types of talks presented at conferences and user groups and in the articles published by php|architect magazine,, and the blogs of those whose feeds are distributed through Planet PHP.


On the Rise of Community Conferences

The PHP world is exploding with community conferences. In fact, web development technologies in general are seeing a wide range of community-driven conferences springing up around the world. I think there are many reasons for the proliferation of these conferences, and in this post, I present my opinion on how this trend came to be, along with a definition of what I think constitutes a technology-focused community conference.


Build PHP 5.4 on CentOS 6.2

In case you haven’t heard the news, the PHP project released version 5.4.0 last Thursday. Naturally, I decided it was time to install and give it a try. I chose to install to a clean and bare-bones CentOS 6.2 virtual machine using VirtualBox. I did this for two reasons: 1) I wanted a clean environment for the build, and 2) I wanted to play with CentOS. At the time of this writing, there are not yet any official CentOS RPMs for PHP 5.4, so I had to build PHP from source. What follows are the notes I took during the installation and build process. I hope you find them helpful.


Revamping my development toolchain

It used to be that once a year I would take a good, hard look at the tools I used and endeavor to learn something new or change my workflow with those tools. However, I’ve been living the #startuplife for the past two years, so it’s been about three years since I last addressed my development toolchain. I decided to come up for air and take some time this weekend to rectify that by addressing five main areas: my terminal emulator, my shell, my terminal multiplexer, my IRC client, and my color scheme—yes, even my color scheme! In addition, I decided to push out my updated Octopress-powered blog, even though things are still a little rough around the edges.


A Different Kind of Conference: the PHP Community Conference

For those who have been following along, you’ll know that I helped organize a mini-conference for PHP, along with Elizabeth Naramore, in the Fall of 2006. It was little more than an excuse for a small group of people to get together, kamp, talk shop, and have fun—and it was a lot of fun. It was so much fun, in fact, that Elizabeth and Keith organized it again in 2008. That was PHP Appalachia. It was the stuff of legends.


Moontoast Is Hiring Senior PHP Developers

Moontoast, the company where I now work, is looking for senior PHP developers. This is an on-site (Nashville, TN), contract position that could potentially develop into a full-time position. If you’re interested, let me know, and send your resume to hr [at]


Rebooting Nashville PHP

I recently moved to Nashville, and as part of that transition, I’ve taken the helm as the new organizer for the Nashville PHP user group. I posted what follows to the Nashville PHP mailing list, but I thought it would be a good blog post. Enjoy!


Blasting Off with Moontoast

Since I announced on Twitter that January 15 would be my last day at Schematic, I’ve received many positive responses and much encouragement. The biggest question, though, was where I would be going next.


PHP Advent 2009

Six years ago, I became aware of the PHP community. I joined it three years prior to that.


Microsoft Web Dev Summit 2009

For the past three years, Microsoft has hosted the Microsoft Web Development Technology Summit, inviting a small group of community leaders, project developers, and prominent members of the PHP community, primarily for the purpose of eliciting feedback on how to better support PHP on Windows. I’m privileged and honored to be invited back for a third year to the fourth annual edition of this summit.


CodeWorks Wrap-up

I never wrote about days 13 & 14 of CodeWorks, nor did I post the slides on October 7, like I promised to attendees of my talks. After CodeWorks, my website underwent weird spikes in traffic, causing it to be extremely slow. I thought the problem was DreamHost, so I moved everything to a slice at Slicehost. Long story short, my slice kept crashing, so I moved everything back to DreamHost after several weeks of intermittent uptime to let them deal with the problems. That’s what delayed my posting, and I apologize to those who have been looking for the slides.



This morning, Matthew writes about building RESTful services with the Zend Framework. I have a lot of thoughts on his post, and I might blog more about it later, but right now, I want to focus on David’s comment:


Building Titanium with PHP

Several months ago, I started the process of embedding PHP into the Titanium platform. After several sprints of work, the Appcelerator team was finally ready to merge my work into their master branch, and Martin Robinson worked to bring the implementation to maturity. The current release of Titanium Developer does not yet have the PHP support built in to the bundled SDK, and I’m not sure when it will be released, so I thought I’d share how to get a development version built with PHP support so you can start playing with it and even help the Appcelerator team by catching bugs in the implementation.


CodeWorks Days 11 & 12 (Washington)

Departing Miami, I gazed upon the Atlantic Ocean as we cut through the clouds, making our way farther from the shore, and the thought occurred to me that this tour — these two weeks — has taken me from sea to shining sea across this great country. What a fitting thought to have as this next leg of the tour took us to Washington, DC.


CodeWorks Days 9 & 10 (Miami)

Miami CodeWorks, so far, was the smallest conference but I still think some important connections were made, especially with regard to user group contacts.


CodeWorks Days 7 & 8 (Atlanta)

Atlanta was the mid-point stop on the CodeWorks tour, and since it’s my home, I decided to use it as an opportunity to spend time with my family before heading off on the second half of the tour. As such, there was very little hallway track activity for me, but I did get a chance to make it to a few events.


CodeWorks Days 5 & 6 (Dallas)

Yesterday, the CodeWorks B-Team (the session day team, a.k.a. Team Awesome) ran into a bit of a travel snafu that actually worked out better for us. On the way to the airport in Los Angeles, we got stuck in traffic caused by an overturned cement mixer truck. And by overturned, I literally mean the cement mixer was lying flat on its back across the barrier separating the north bound from the south bound lanes. I’m not sure how it was even possible, but there it was. Derick took some video of the accident that he may or may not post later.


CodeWorks Days 3 & 4 (Los Angeles)

I’m writing this from Los Angeles during the session (or conference) day of CodeWorks. The “A Team” (tutorial team) is en route to Dallas today, while the “B Team” (session team) gives their talks.


CodeWorks Days 1 & 2 (San Francisco)

I’m breaking a long and terrible habit of not blogging in order to share my experiences at CodeWorks over the next two weeks. As you may know, CodeWorks is a touring PHP conference that is traveling to seven cities. I’m privileged to be speaking in each of the cities.


php|tek 2009 Slides

Another php|tek come and gone. I’m saddened by leaving, but, as usually happens, I’m reinvigorated and reenergized to go back to work. It seems I need these events to get together with other developers to raise me up out of periods of burn-out. I’m sure the same goes for others.


On Companies Using Twitter

As a Twitter user (@ramsey) with over 700 followers, a good followers-to-following ratio (4 followers for every 1 I’m following), and over 4600 updates, I think I have a valuable perspective on the use of Twitter. I throw these numbers out there not to brag, and I’ll be quick to point out that this is certainly not a high number of followers, and a certain percentage of them are probably spammers, but the numbers tell that I obviously have something to say that some people find interesting and engaging.


Web 1.0, 2.0, and 3.0 Defined

A couple of months ago, an e-mail thread went around the company discussing “Web 3.0” technology. Naturally, I felt the need to put in my two cents, and I thought it would make for a good blog post. Let me know what you think. Do you agree? Disagree?


Specifying rev="canonical" With HTTP

It looks like there’s a lot of momentum behind rev="canonical" now – and all built up within the span of about forty-eight hours. So, while I disagree with the use of “canonical” for semantic reasons and rev for the potential of mass misunderstanding and improper implementation, I think I’ll bite the bullet on this one for now, but time will tell what the community ultimately decides.


Summarizing My rev="canonical" Argument

I think my central argument against rev="canonical" in my previous post was lost due to the fact that my post was so long. So, I’ll try to summarize my points in a very concise way.


A rev="canonical" Rebuttal

There’s a lot being said about rev="canonical". Others have already explained what it is and stated the arguments for it, so I won’t go into all of that, but I would like to offer a rebuttal – to play devil’s advocate, so to speak – in hopes that we’ll all slow down and think about what we’re doing before we jump all-in and start implementing something that may not be a good standard for the Web, leading to more problems down the road.


HTTP Status: 100 Continue Corrections

Last year, I wrote about the 100 Continue HTTP status code and the usage of the Expect header with the 100-continue expect value. However, I made a few erroneous statements, and a reader recently corrected me on them. So, I’m writing now to correct those statements so that I’m not misleading anymore readers.


Book Review: RESTful PHP

When I was contacted by a representative of Packt Publishing to review RESTful PHP Web Services by Samisa Abeysinghe, I was naturally interested. After all, I’ve written and spoken a lot about representational state transfer (REST). But I was also skeptical because plenty of people these days talk about RESTful web services, but they don’t really explain REST.


HTTP Status: Client Errors

The last post in my HTTP status code series was just over six months ago. I’m sorry for taking so long to revive the series, but I’m back with a discussion about the 4xx status codes. I hope you enjoy it!


Welcome, New Year, and Other Miscellaneous Things

We’re well into the New Year – 24 days to be exact – and I’ve long since been putting off this post, but it’s not really a single post. Instead, it’s a collection of things that I’ve been wanting to say but have been putting off, and it’s a look forward to things I’m working on, would like to see happen, or would like to be involved with this year. So, rather than the obligatory look back at what I did last year, this is a look forward at what I’m interested in for the coming year (in no particular order).


The Death of SOA?

Someone at the office sent around a link to an InfoWorld article that discusses a blog post made by Anne Thomas Manes, vice president and research director at Burton Group, in which she announces the death of SOA.


Seven Things

Started by Tony Bibbs (or maybe Marcus Whitney before him) and tagged by Elizabeth Naramore and Jon Whitcraft, I have succumbed to the 2009 blogging phenomenon known as “tagging.” Initially, I was going to ignore the tag, but when Elizabeth tagged me “just because,” I knew it was on.


Slides from php|works & PyWorks

Here are the slides for my talk “You Look Like You Could Use Some REST!” given on the general track at php|works and PyWorks in Atlanta a few weeks ago. In my talk, I mentioned that I would be adding my notes from the talk to this blog post, but I’ve decided against doing that for the time being. However, I’ve been thinking about REST a lot lately, and I’ll use this blog in the near future to write some of these thoughts. I’m also working on a now overdue article on REST for php|architect, and I’m sure my editor would not like it if she knew I was blogging about REST instead of writing my article about it. I’ll announce that article here when it’s published so you can go snag a copy.


Speaking At php|works In Atlanta

Next week, I’ll be speaking at php|works and PyWorks in Atlanta on Representational State Transfer (REST). My talk is in the general track this time, so it’s good for both the PHP and Python audiences who will be attending the conference.


Atlanta PHP 11/08 Meeting

I usually don’t announce Atlanta PHP meetings from my blog, but given the short notice, I figured that greater exposure would be best, so here we go…


ZendCon 2008 Slides

See below for the slides from my Distribution and Publication With Atom Web Services talk given at the 2008 Zend PHP Conference and Expo in Santa Clara, CA.


Heading To ZendCon

As I write this post, I’m sitting at about 38,000 ft on a Boeing 757-200, flying high above the now tropical storm Ike. My destination is Santa Clara, CA and the Zend PHP Conference and Expo.


PHP Groups Mailing List Moves To

After a long hiatus and a very quiet mailing list and forum, I am delighted to announce that the main communication channel for PHP Groups is moving to the official PHP project at!


OSCON 2008: Slides

Here are my slides for the memcached presentation I gave at OSCON this year. I experimented with a new slide template, which turned out for the worst, since the contrast of the type on the screen was very poor, making it difficult for attendees to read. I apologize for this. In addition, I was completely distracted during my entire talk by loud music coming from the room next door. Nevertheless, the majority of my audience was still around even after I ran 5-10 minutes over schedule, eating into their free beer time, so I suppose that says something and that they were learning. :-D


OSCON 2008: Day One

I find myself once again in Portland, OR at the O’Reilly Open Source Convention. This year, I’m giving a talk on memcached. The talk is on the PHP track, but the concepts can apply in any of the other languages represented at OSCON, so if you’re interested in memcached and how to use it, stop by on Wednesday at 5:20pm.


HTTP Status: Redirection

I’ve been rather uninspired and, therefore, uninterested in blogging lately, which is why I’ve neglected to continue my series on HTTP status codes. However, while trying to figure out a quick and easy way to delete tons of received direct messages from my Twitter account, I stumbled across one of my HTTP pet peeves coupled with the odd use of a 3xx status code, which inspired me to launch into a short rant followed by a discussion on the redirection series of status codes.


DCPHP 2008 Slides

As promised to the attendees of my talks, I have posted the slides for my presentations on SlideShare.


php|tek 2008 Wrap Up

So, my first conference of this year’s conference “season” has come to a close, and as a wrap-up post for the conference, I’d like to do something a bit different. I’m not going to discuss the sessions I attended or talk about the keynotes. Instead, I’d like to approach this post from the community aspect.


HTTP Status: 204 No Content and 205 Reset Content

The 200 range of HTTP status codes represents successful requests. I’ve already covered 201 Created and 202 Accepted and 206 Partial Content. Today, I’ll wrap up my discussion of the 200 range by talking about 204 No Content and 205 Reset Content. The 200 OK response is probably the status with which most are familiar, and I’ll discuss it later when covering the HTTP verbs.


Umbrello UML Modeler

Special thanks to all the twitterites who recommended UML modeling tools. Umbrello UML Modeler appears to be the one I was looking for. Here are a couple of quick notes about what I had to do to get it running on my Mac, mainly for my own future reference, but I hope these also help someone else.


HTTP Status: 201 Created vs. 202 Accepted

Continuing my series on HTTP status codes, I’d like to talk today about the use of the 201 Created and 202 Accepted codes.


HTTP Status: 100 Continue

UPDATE: This post contains some false information. Particularly, you should not send back a 417 Expectation Failed response as a way of telling the client that the server could not fulfill the response because of data presented in any of the request headers other than the Expect header. I have corrected my statements here in a newer post, and I apologize if I caused any confusion.


Stefan Esser: A Most Influential Person in IT

I subscribe to eWeek. Well, you could hardly call it “subscribing.” They send me the magazine for free, which I think they do for all of their “subscribers.” Nevertheless, I receive a print copy of the magazine each week. Of course, last week was no exception.


Making Money With PHP and Google's Summer of Code

Are you a student or do you know of a student who wants to make money this summer flipping bits instead of burgers? Furthermore, does said student want to make money programming for the PHP project? If so, then the Google Summer of Code and the PHP project provides just the opportunity.


PHP Appalachia 2008

Elizabeth Naramore announced PHP Appalachia 2008 earlier this week.


Supporting PUT & DELETE in the Zend Framework

Creating a RESTful (Representational State Transfer) Web service is not simply about serving read-only content through HTTP GET requests. It’s about using the full range of HTTP’s constrained interface to allow clients to consume or create resources within your service. Take a look at CouchDB, for example. Its initial releases look very promising, and the server accepts GET, POST, PUT, and DELETE requests to manipulate resources in the system. I can’t wait until the project implements authentication and authorization features; then, it will look much more attractive for real-world use.


Happy 10th Birthday, XML!

This year marks the tenth anniversary – or birthday, if you will – of the Extensible Markup Language. Version 1.0 of the W3C recommendation was published on February 10, 1998.


Namespace for URI Templates?

I was giving some thought to Joe Gregorio’s latest draft of URI Templates and considering how to use them with paginated feeds.


Error Response Body For Atom

I’ve spent the last month deeply entrenched in the intricacies and idiosyncrasies of RFC 5023(The Atom Publishing Protocol) and RFC 4287(The Atom Syndication Format). You could say that we’re pretty intimate right now…but we haven’t yet made it to “third base.” I’m a gentleman, mind you!


Congrats Costa Rica PHP!

Last night, Costa Rica PHP held their first user group meeting. A whopping 37 developers attended! While I’m excited to see any new PHP user group form and be successful, I’m especially ecstatic about Costa Rica PHP because it’s headed up by two of my colleagues from Schematic: Pablo Viquez and Karolina Hidalgo.


My Downtime

Since I get off work at 6pm and have to drive through what is often an hour and a half of traffic, I usually get home after my son has gone to bed. I feel guilty about this, and I don’t like that it happens, but I’ve grown accustomed to it over the last year – so accustomed, in fact, that I’ve sort of come to expect it.


Goals for 2008

Yesterday, Cal Evans blogged about his goals for the New Year, and a lot of them sound like the same things that have been going through my mind as my own personal goals. Well, I normally don’t make resolutions, and when I do think of things I want to accomplish, I almost never write them down or keep track of them, which inevitably leads to failure.


PHP Advent Calendar

I thought I’d take a quick moment to promote myself by making a meta-post about Chris Shiflett’s latest PHP Advent Calendar entry from me. Dashboard Widget

While reading through news and blog entries, I came across a post on Zend’s Developer Zone about Paul Reinheimer’s new PHP Function a Day website. The Function a Day site functions in much the same way as those nifty tear-off-a-page-per-day desktop calendars we all buy for those on our Christmas shopping lists for whom we can’t quite figure out what to get. I decided to turn it into a Dashboard Widget for Mac OS X!


Microsoft Web Development Summit 2007

I’m privileged to be in Redmond, WA this week at the Microsoft Web Development Summit. (Special thanks to Glen Gordon for sending me an invitation.) Also in attendance are a good crowd of PHP developers from various backgrounds and experience, including developers from Drupal, Gallery, Facebook, CakePHP, Solar, core developers, extension developers, authors, and just plain PHP programmers. Microsoft has invited us to their main campus in an effort to reach out to the PHP community to solicit opinions and feedback on various technologies, including IIS, Silverlight, their Ajax library, Expression Web, etc.


Zend/PHP Conference 2007

In just over a week, I’ll be flying to sunny California to attend and speak at the Zend/PHP Conference and Expo. I’ll be giving two talks at the conference: “Give Your Site a Boost With Memcached” and “Mobilizing & Sharing: How the Zend Framework Builds Community for Nokia MOSH.” The former is an updated version of a talk I gave earlier this year in Germany; the latter is a new talk I’m giving with my colleague Brian DeShong, and it’s more or less a case study of Schematic’s use of the Zend Framework in building Nokia’s mobile social networking website, MOSH.


Lampooning Benchmarks

When I first came across Jonathan Street’s “7 tips for lightning fast PHP sites” blog post via, my first reaction was something like: “Egads! These benchmarks are stupid and misleading! These functions are simply aliases of each other. There should be no discernible difference, and any buffoon should realize this fallacy!” This was before I clicked through from to read his post.


SPL Article Published

Today, Zend Developer Zone published my article on the Standard PHP Library (SPL).


On Being a PHP "Star"

Last week, during php|works, Andrew Collington quietly sat down with us after a long day of tutorials. He kept his mouth shut, so his presence went largely unnoticed, but his blog was unable to escape the wide range of my ego.


php|works 2007: Day 3

It’s been a week since Day 3 (Day 2 for those on the zero-indexed conference time-table), and it’s high time I got around to writing up my thoughts on the conference…


php|works 2007: Day 2

Even though today is officially “day 1” of php|works, I consider it “day 2” because I spent the majority of yesterday (six hours of it) standing and talking to a room full of people about topics they need to know to pass the Zend Certification Exam. It was a tiring day, and my lack of sleep and trek through two hours of Atlanta rush-hour traffic didn’t help. Still, I made it through the day, I think the tutorial was a success, and I hope that those attending who took the exam yesterday or today passed with flying colors.


php|works 2007 Slides

Here are the slides from my Designing RESTful Web Applications presentation I gave today at php|works.


php|works Begins Tomorrow!

So, I’m here gearing up for php|works at the Sheraton Gateway Hotel near the Atlanta airport. I’m giving a 6-hour Zend PHP 5 Certification Crash Course tomorrow. Following that, I’ll play host to some speakers and conference attendees (as a sort of unofficial social coordinator–as if I have those skills) for after-hours dinner and drinks. If you’re interested in hanging out after-hours this week, look me up at the conference and let me know.


WPP Digital Acquires Schematic

The company I work for was just acquired by WPP. Congratulations, Schematic!


php|works 2007 In Atlanta, GA

Atlanta PHP is proud to welcome php|works to Atlanta, GA on September 12-14!


PHP Unconference '07 and ZendCon IRC Channel

I just wanted to take a moment to promote the PHP Unconference to be hosted this year by Zend during the Zend/PHP Conference & Expo in Burlingame, CA. The Chairperson for the PHP Unconference ‘07 is none other than the PHP community’s very own Patrick Reilly. He’ll be in charge of making sure things run smoothly and that the open community aspect of the unconference is maintained.


PHP Community T-Shirts

Last year, a substantial number of regulars of #phpc attended the Zend/PHP Conference and Expo, so we decided to make #phpc t-shirts for everyone. This year, that number of attendees from #phpc has dramatically risen, and, again, we’ll be creating special t-shirts, this time using the original logo created by Peter Jovanovic (with contributions from Richard Davey).


OSCON 2007: Day 5

As OSCON winded to a close today, I attended the morning’s keynotes, which I found to be some of the better keynotes I’ve seen at OSCON. They were entertaining, thoughtful, and weren’t filled with marketing drivel.


OSCON 2007: Days 3 and 4

I didn’t get a chance to post yesterday, so today’s post will include my thoughts on sessions I’ve attended for the past two days, but I’ll try to keep things short. If you know me, you’ll understand how difficult this can be.


OSCON 2007: Day 2

Yesterday, I mentioned a “super secret” announcement party that Intel was throwing for bloggers and the press. So, what did they announce? Well, in short, they are releasing a fully open source version of their Intel Threading Building Blocks (TBB) C++ template library. It’s under the GPLv2 (and not an Intel OSS license). The TBB simplifies development of software running on multiple cores (in parallel).


Hello From OSCON

Hi, all. It’s been about a month since my last post, and, for those who know me, I’ve been off of IRC and IM for nearly a month, as well. It’s been very busy around the office, but now that things have slowed down a little, I plan to be around a bit more.


HTTP Response Code Musings

I’ve been catching up on reading old blog posts (and, by old, I mean older than 6 months) – I’ve sort of been out of the loop lately – and I came across a November 2006 post by Adam Trachtenberg questioning the proper use of HTTP response codes in a Web Service. In particular, he was wondering when it is acceptable to return certain response codes.


PHP and Oracle Manual

Maggie writes about an Oracle problem over which we were pulling out our hair. In the end, the solution was fairly simple, but I’ll let you read her post for all the details. I’ll just mention that Christopher Jones pointed me to a freely available book he and Alison Holloway wrote specifically for PHP developers using Oracle: The Underground PHP and Oracle Manual.


Accepting Outlook Invites from Apple Mail

I’ve been using Thunderbird for quite some time for company e-mail, and for the most part, I’ve been happy with it, but when the company uses Microsoft Exchange Server for shared calendars and scheduling, anyone that’s not using Outlook on a PC gets left out in the cold. Keeping track of my schedule has been the source of increasing frustration. Our recommended solution is to simply use OWA to accept all calendar invitations. However, this defeats the purpose of using Thunderbird in the first place, and if you use a browser other than Internet Explorer, your experience is severely limited and downright fugly. The root of the problem is that I use a Mac. I could choose to use OWA or Entourage, but OWA is simply unacceptable, and Entourage is clunky and slow at best.


Intl PHP Conference Slides

I’ve been neglecting for far too long to post these slides, and I’ve been reminded several times by conference attendees that I need to post them. Thank you for the reminders, and I apologize that it has taken me this long to post these. Links to the slides are below…


New York PHP's April Meeting

So, I will once again find myself in New York City next week, and while I’m there, I’ll be attending New York PHP’s April meeting. If you’re in the neighborhood, drop by. Chris Shiflett will be presenting a talk entitled “Security 2.0.” I’ve seen a sneak peak of the title slide, and this talk will be highly informative – as usual – but this time there will be a twist on the sometimes dry topic of security. You’ll have to come see what I’m talking about; you’re bound to be entertained. I’m looking forward to it.


NY Thoughts and Zend_View_Helper Notes

For the second time in two weeks, I find myself back in New York City for a project with Schematic. This is also the second time I’ve ever been to New York, the first time being, of course, just over a week ago. For anyone who hasn’t yet visited New York, if you find yourself flying into Newark and taking a cab into the city, it’ll cost you about $70. However, if you have the opportunity – and it’s nighttime – ask the cab driver to take you through the Lincoln Tunnel (via the NJ Turnpike) rather than the Holland Tunnel. You’ll get a spectacular, panoramic view of the lit-up city from uptown to downtown.


Zend Framework View Notes

I’ve been working a lot lately with the Zend Framework for a project at work, and in a recent upgrade from 0.8.0 Preview to 0.9.1 Beta, I made a few discoveries that I’d like to share, especially since the manual for the Zend Framework is sorely out of date, and many of the examples are either deprecated or no longer work.


Job Transition to Schematic

A year ago, I left a fast-paced, non-profit organization to work from home for Art & Logic, a software development company based in Pasadena, California. It was a much-needed change of pace for me, and allowed me the chance to rediscover PHP and work a lot more with PHP 5, sort through some personal things, cast off some excess weight (both physical and metaphorical), and spend time with my wife through her pregnancy up until now, seven weeks after my son’s birth.


PodCamp Vlogging Panel

As I mentioned a while ago, I will be attending PodCamp Atlanta this weekend. I also mentioned that I’m interested in attending to hear more about vlogging. However, PodCamp Atlanta didn’t have any vlogging sessions scheduled at the time. So, in the spirit of the unconference, I decided to pull together a group of vloggers from across the Southeast to form a vlogging panel – moderated by yours truly.


PHP Groups Announcement

ATLANTA, Ga., Mar. 7, 2007 — PHP Groups, a worldwide network for PHP user groups, launched today with the intent to foster an open community for PHP user groups to share and exchange ideas and information. Membership is open to anyone working with a PHP user group or interested in starting one.


ApacheCon US In Atlanta

So, I popped into #apache on Freenode IRC today to ask a question. That’s when I noticed the news in their topic that ApacheCon US will take place this year in Atlanta, GA from November 12-16 at the Westin Peachtree. This is good news for me (since I won’t need to get a plane ticket) and Atlanta PHP!


LinkedIn and Google?

UPDATE: I’m an idiot. The LinkedIn “info” button shows up next to every e-mail address on every web page because I finally upgraded to the newest version of the LinkedIn Browser Toolbar for Firefox. I feel pretty stupid now for jumping the gun on this, and there is no mysterious partnership between Google and LinkedIn, but isn’t this a good example of how browser plugins are changing the way we view sites? (More thoughts on this later.) At any rate, I wouldn’t mind seeing some kind of mash-up of Google/LinkedIn/Plaxo; it’d definitely make managing my contacts between the three much easier.


Mustaches and Drupal

If you’ve been following along, then you’ll recall the ‘Stache Bash photos I posted to my Flickr account a year ago. Well, my group of friends and I decided we wanted to take this year’s ‘Stache Bash to the next level, so we decided to promote the hell out of it on MySpace, but then I got an idea: why not make a website devoted to the ‘Stache Bash.


O Google, Hear Our Cries (For a Contacts Application)

In an effort to organize my life, I’ve been trying out various organizer programs, from Yojimbo to SOHO Organizer to Contactizer. That’s when I realized that I need Google’s help. If I do everything the Apple way, then I need to use Address Book, iCal, and Apple Mail. Then, I can make the most out of organization software like SOHO Organizer and Contactizer, but I don’t use the Apple programs. I use things on the Web like Gmail and Google Calendar. I could go back to using programs like Apple Mail, but Gmail has ruined me simply because of two simple features that seem so obvious I don’t know why other mail applications don’t have them: tagging and conversation threading.


Learning to Say "No"

I have the bad habit of being unable to say “no” when something comes along that I think will be a good opportunity. The truth is: I just don’t want a good opportunity to pass me by that I will regret later. The problem is that, in accepting these opportunities, I’ve caused myself to become needlessly overwhelmed, and I’ve even hurt my relationships with other people because I’ve let them down, being unable to pull through and finish certain things.


Business Case for PHP

I recall several years ago a discussion on #phpc on Freenode IRC about the need for white papers on the use of PHP in the enterprise/business world. These white papers would serve as a sort of advocacy for PHP, but more important than advocating the use of PHP, they would help answer questions about PHP that management types have. The white papers would discuss the benefits of using PHP, highlighting its strengths and even noting its limitations. In short, it would answer the question: why is PHP suited (or not suited) for the task we need to complete? I was particularly interested in these white papers for Atlanta PHP to use and distribute to the local business community.



Sean Quinn Ramsey was born this morning (Feb 1st) at 2:27AM.


PodCamp Atlanta

Just thought I’d take a moment to promote a local BarCamp-style event being held at Emory University in Atlanta on March 16-18: PodCamp Atlanta. Apparently, there’s a lot of PodCamps going on around the world this year, and this is just one of them.


Death and Birth

Yesterday my grandmother passed away (my mom’s mom). She had battled cancer for many years, and underwent chemotherapy treatments for a long time. Chermotherapy is just plain evil. It’s poison that’s meant to kill cancer cells. The problem is that it doesn’t target cancer cells, so it affects your entire body. It’s very painful, and it’s hard to watch someone undergo the treatments.


Robert Swarthout Has a Blog

Just got a call from Robert Swarthout of and Robert’s a member of the Atlanta PHP user group, and he was calling to let me know that he and Zack (also of PaperBackSwap and SwapaCD) want to speak at a meeting about what to do when your “pet” project grows into a huge, heavily-trafficked website.


Quoted in InfoWorld

Last week, I received a rather cryptic e-mail with the following subject line: “Are you available today to talk about PHP?” The body was even more cryptic: “If so, please provide a phone number. Thanks.” Normally, I would’ve tossed such a message aside, assuming that it’s either spam or someone in Nigeria wanting me to build a PHP application for them after I give them my bank account and routing numbers so they can deposit the funds necessary to complete the work, but I noticed that this message was sent by an Editor at Large from InfoWorld. So, I decided to give it a shot and send my number back to him.


Atlanta PHP Call for Proposals

I’m pleased to announce the official Atlanta PHP Call for Proposals. If you’re going to be in the Atlanta area and would like to present at an Atlanta PHP meeting, then, by all means, please let me know!


PHP Throwdown Registration

PHP Throwdown announced today that registration is now open for any individual or team interested in taking part in the competition. PHP Throwdown is, in a nutshell, a competition to see what can be accomplished with PHP in a span of 24 hours.


Zend Executable Debugger Eclipse Plugin

UPDATE (5 Jan, 21:00): Patrick Mueller has just posted some links to information about XDebug support for PDT. Now, for those not wishing to use the Zend Debugger, you may now use XDebug.


Holiday Cheers!

It’s become a personal tradition of mine to try various winter and holiday ales and lagers each year around this time. I’ve also found that many members of the PHP community are aficionados of good beer. Thus, my Christmas gift to the PHP community this year will be a list of recommended winter brews. I won’t spend too much time describing the beers. Instead, I’ll link to their pages at Beer Advocate (a PHP-driven site) for reviews.



In my effort to clean my plate of blog topics, here’s yet another post for this week. I promise to keep this one much shorter…


Undefined Constant Is a String?

From the I-noticed-this-one-day-while-looking-at-a-co-worker’s-code department comes a tale about the use of undefined constants in PHP – and relying on this twisted “feature” to make an application function properly.

A photograph of Cal Evans holding up the t-shirt at ZendCon 2006

ZendCon & IPC Wrap-ups

This post is long overdue, but I was finally able to sit down and type out my thoughts about the Zend/PHP Conference and Expo and the International PHP Conference. I had the privilege of being invited to speak at both of these conferences, and I accepted both invitations, which, in retrospect, may not have been a great idea since they were back-to-back in different parts of the world; I felt like I knew the NSA on a first-name basis. Looking back, though, I enjoyed each trip because I was able to meet new people, develop new friendships, and spend time with old friends.


Installing the Eclipse PHP IDE

I recently wanted to try out the Eclipse PHP IDE, the official Eclipse project that is endorsed/backed by Zend (I’m not entirely sure about the nature of their relationship, to be honest). I already had a working Eclipse installation that I had used to try out PHPeclipse for Eclipse (not to be confused with the PHP IDE), so I didn’t want to bother downloading a brand new full package of Eclipse that includes the PHP IDE and all its requirements. So, I set about on a tedious journey to figure out how to install PHP IDE using the Eclipse Update Manager. These are my notes.


Flickr Namespace and array_multisort() Issues

Aaron Wormus recently criticized me on IRC for putting too much thought and effort into blogging. He may have a point there. I’ve got a huge list of things I want to write about, but I haven’t put forth the effort because I do take too much time to write a post. So, here goes one for writing up a quick post…


Frankfurt Slides

I’ve been at the International PHP Conference in Frankfurt, Germany all week. In all, I like the feel of this conference. They have a good balance of catering to the community while appealing to businesses and management. It’s also a great opportunity to network with PHP programmers and the community on the other side of the pond.


XML & Web Services Slides

I’ve just finished giving my presentation on XML & Web Services with PHP (An Overview). Overall, I think the presentation went quite well, though I had entirely too much material to cover in a very short period of time, so it was impossible to go into much depth on any one type of Web Service. This was unfortunate, but I think the “overview” nature of the presentation allowed for this top-level approach.


ZendCon Day 1 Roundup and Keynote Thoughts

The first day of the Zend/PHP Conference and Expo (the day of tutorials) was great. I sat in on Robert Richards’s Advanced XML and Web Services and Marcus’s and Sara’s Extending PHP tutorials. I multi-tasked as best I could, catching up on some work while finishing my slides and listening to the presentations. Robert went into a great deal of information on DOM, which was all very excellent material – you can definitely tell where his passion lies and that he knows his stuff – but discussion on Web Services was not very prominent. My presentation today, though, while entitled “XML & Web Services with PHP” will be nearly the opposite and discuss Web Services in general, while glossing over XML. So, I think the two properly balance each other. Marcus and Sara covered PHP extensions brilliantly, but, while WiFi here has been excellent, trying to connect to Sara’s ad hoc network for the presentation hosed my wireless connection, and I couldn’t connect for the remainder of the day from the presentation rooms.


PHP Throwdown (and Zend Con)

I’m at the Zend/PHP Conference and Expo right now sitting in Robert Richards’s Advanced XML and Web Services tutorial. I’ll be attending Marcus’s and Sara’s Extending PHP tutorial later today. Had a great day yesterday, in which Andrei drove us to wine tastings at two different wineries: Ridge and Picchetti.


Off to the Zend/PHP Conference and Expo

I’m flying out to San Jose tomorrow for the Zend/PHP Conference and Expo. Does anyone know the way? ;-)


How To Teach PHP

While at PHP Appalachia, I had the pleasure of meeting David Rasch, the founder of Triangle PHP, which meets in the Raleigh-Durham-Chapel Hill region of North Carolina. One night, by the campfire, David and I launched into a discussion about how newbies learn PHP from current books on the market. He suggested that the format for teaching PHP needs to change and that these books need to start not by teaching PHP from the Web but by introducing newbies to PHP concepts by creating command-line applications. The idea being to introduce them early on to OOP and best practices, rather than trying to get them started fast with a simple “Hello, World” Web site.


#phpc T-Shirts

Since there will be a substantial number (something like 9 or 10) of #phpc frequenters in attendance at the Zend/PHP Conference and Expo, we decided it would be cool to print up some t-shirts for fun and wear them at the conference. So, quickly, Aaron Wormus came up with a t-shirt design, and we’re ready to start printing them. Tuesday, October 31 will be the official #phpc wear-your-t-shirt day for conference goers.


PHP Women

If you’re keeping count, you’ll know that there are seven women listed in my blogroll. These seven women are PHP programmers, and I’ve made it a point to include them in my blogroll because women are underrepresented in PHP and these women provide a much-needed voice for all female PHP developers. However, it still seems that there are very few PHP developers who are women, or perhaps, they’re just not very active in the community, which is my hunch (seeing as how there are at least four women who frequent the Atlanta PHP meetings).


Zend PHP 5 Certification Study Guide Published!

Today, php|architect has released the latest in their line of nanobooks: php|architect’s Zend PHP 5 Certification Study Guide. Writing along with Davey Shafik, I’m proud to have been a part of this project.


A Community of Diverse Backgrounds

To me, it’s always very interesting to hear the pre-PHP stories of other PHP programmers – the days before they programmed in PHP, what they did and how they came to call themselves PHP programmers. The stories vary greatly from programmer to programmer, and almost none begin with: “I was working toward a degree in computer science ….” In fact, the more people I talk with, the more I’m convinced that the typical PHP programmer, in fact, sort of got to where they are by an odd arrangement of life circumstances we call coincidences. Almost none elected to be where they are, but nearly all enjoy the work they do, many to a great degree of passion.


Heading Off to PHP Appalachia

Well, I’m heading to PHP Appalachia to get things set up and ready for tomorrow. I hope to keep things regularly updated here, on the PHP Appalachia Web site, on my Flickr blog, and on #phpappalachia (on Freenode IRC). Join us in any of these places to keep track of our discussions and activities, as I’ll be encouraging attendees to blog and post notes about the event.


IRC for PHP Appalachia

We now have an IRC channel for the PHP Appalachia conference: #phpappalachia on Freenode. Come join us!


Conference Line-up This Fall

I’ve had talks accepted at several conferences this Fall, so I’ll have a fairly busy travel schedule ahead of me. Here are the conferences at which I’ll be speaking. If you happen to attend any of these, be sure to drop by and say “hi.”


Zend Framework on Ning

I couldn’t sleep tonight, so, instead of doing one of the many other things on my plate that I need to actually work on, I decided to set up the Zend Framework on Ning so that others could clone it and use it for their Ning applications. If you’re unfamliar with Ning, here’s what the Ning developer documentation says about itself:


Reminder: PHP Appalachia

This is just a reminder to let you know that the extension for reserving your campground spot for PHP Appalachia will expire soon – on August 1, to be exact. After August 1, you will still be able to reserve a spot at the campground, but you will not receive the group discount, nor is there any guarantee that your campsite will be placed with or near the rest of the group. So, sign up today!

A screenshot of an example issues page on Google Code

Project Hosting on Google Code

Right now, I’m sitting in Greg Stein’s A New Google Service for the Open Source Community presentation at OSCON where he has just announced project hosting on Google Code starting today for open source projects. This service is similar to Sourceforge, but it’s done the Google way. Here are my quick notes from the presentation:


PHP Appalachia Reminder

PHP Appalachia is an informal gathering of PHP enthusiasts who just want an excuse to get together and enjoy exchanging information in a relaxed, beautiful setting. There is no set agenda, no formal speakers. Just 3 days of camping and sharing PHP ideas and experiences with people just like you.


Acceptable Rates for PHP Programmers?

I originally posted this to the Atlanta PHP Freelance Advice forum, but I don’t think it’ll get much attention there for a while since we’ve just launched our new boards and they have very little traffic. Thus, I wanted to try it out here to see what the community thinks. This topic came up after an Atlanta PHP meeting a few months ago, and I’ve been asked the same question several times since then. So, what exactly is an acceptable rate for a PHP programmer?


New Site for Atlanta PHP

Over the weekend, Atlanta PHP launched its brand new Web site and forum. We hope that this new site and forum will allow us to serve our local developer community much more effectively.


Net Neutrality Defeated?

Sir Tim Berners-Lee warned against a two-tiered Internet “dark period” at the WWW2006 conference in late May, and now it appears that we are moving toward that Internet dark age. Yesterday, the US House of Representatives overwhelmingly passed the Communications, Opportunity, Promotion, and Enhancement (COPE) Act of 2006 (H.R. 5252) and rejected the Markey of Massachusetts Amendment (Net Neutrality) to the bill.


Did You Test It?

Geoff Young posted a note on his use.perl blog about how he’s going to reply from now on when someone asks “Did you test it?” He says that, unless he has actual tests for the application, he’ll now respond, “I poked it and it seemed to work, but it doesn’t have tests.” His point being that actual tests “count for a lot, while a few mouse clicks really don’t.”


PHP Appalachia Announced

As Elizabeth mentioned, what began as a discussion between herself, Aaron, Chris, and me in the #phpc channel on Freenode IRC has become a reality. PHP Appalachia is born!


Does Web 2.0 Need a New Term?

The term “Web 2.0” is the marketing brainchild of O’Reilly Media. Yet, it has come to be associated with so many different facets of this new culture of the Internet we see emerging. I, like Ivo Jansch, believe that Web 2.0 is now more about a cultural shift than the technology used. It’s about the way we handle data and communicate with others. It’s about sharing ideas in an open forum. It’s about who holds the knowledge and, thus, the power – in a Web 2.0 world, everyone has free and open access to the knowledge; everyone has the power.


Support Net Neutrality

I am a strong supporter of small government. I believe in as little government regulation in our lives as possible, and these beliefs carry over into my feelings on software, patents, and copyrights. I also tend to believe that fewer laws are better, but there are circumstances in which more laws can help protect certain freedoms we take for granted. One of these freedoms is that of “Net Neutrality.”


Create an Image from XML Data

I had some time to kill and a silly problem to solve, which means here’s some more SimpleXML fun for you:


Congratulations, Brain Bulb!

I just wanted to take a moment to congratulate Chris Shiflett and Brain Bulb on their recent acquisition by OmniTI.


Add Children with SimpleXML

I was very excited today while glancing through the code in ext/simplexml/simplexml.c to find some, as of yet, undocumented methods in PHP’s SimpleXMLElement class. This discovery came after I’ve spent several hours over the last couple of nights banging my head against the desk to figure out a way to create a class that extends SimpleXMLElement and adds a new method for adding a child, which would have to use DOM in order to work – or so I thought.


Share Your OPML

It seems I’ve been focused on OPML for the past few posts, and why not? OPML appears to be gaining a lot of attention lately. There’s even an OPML Camp in Boston later this month.


Generating OPML From (And Getting All Your Links)

UPDATE: Please note that has updated their API in the time since I wrote this. I have updated the URLs in my examples accordingly. The authentication is much safer since they are now using SSL.


OPML Reading List & PHP Upgrade Notice

The other day, I came across Scott Johnson’s PHP OPML Reading List. Offering an OPML reading list for others to download is a great idea, and, since I’ve not yet blogged about it, I wanted to point out that I’ve been doing this for a long while now. On my home page, under the “syndicate” heading, is a link to my OPML blogroll. Feel free to import my OPML into your feed reader; that’s what it’s there for. (Please also note that I use SimpleXML to generate the blogroll on my home page from this list.)


Comet Is the New Ajax

This time last year, a single word began a revolution in Web design. Coined and published on February 18, 2005, by May, the word “AJAX” was on everyone’s lips. It soon became the talk of the entire industry, and has revolutionized Web design as we know it – or, at least, it’s given plenty of bloggers lots to talk about. Ajax is old hat now. This year, the word is “Comet.”


The Impending PHP Boom

Jim Plush’s recent blog post “The Soon to be PHP Boom” reminded me of my October 2005 post “What’s Good for Zend is Good for PHP.” In that post, I observed – from comments made by Marc Andreessen in the Wall Street Journal and Zend’s involvement in the Enterprise – that “the forecast for PHP looks bright and sunny.”


AJAX W3C Standardization

Well, it’s been long enough. It’s time to polish off the ol’ blog and start blogging again. So, while everyone’s down in sunny Orlando blogging about php|tek, I’m sitting right here 12 hours away (by car; 1.5 hours by plane) in Atlanta in my new home office, enjoying the scent of new office furniture – which is most likely just the scent of pressed fiberboard, or something. But, hey, I don’t care how it smells as long as it’s a good tax write-off.


Atlanta PHP Podcast

On Thursday, March 2, Atlanta PHP gathered for its usual monthly meeting. However, this time, I decided to try to capture an audio recording of our meeting. The audio from the podcast attempt of our meeting actually turned out much better than I anticipated, given the equipment used to create the recording: my PowerBook’s internal microphone. Yet, the Q&A session we had following Kevin Roberts’s presentation had to be cut for two reasons: a) time and b) it was too hard to hear most of the discussion.


Vaporware No More: Zend Framework Available

A preview release (v0.1.1) of the Zend Framework is now available, and, so far, I must say that all looks well.


EFF stickers in "The IT Crowd"

Channel 4’s new show about an IT department is hilarious! Plus, their office is littered with Electronic Frontier Foundation (EFF) stickers. Just check out the door in this pic.


Luke Welling's Blog

In a pointer from Laura Thomson, Luke Welling has started blogging. Luke and Laura are the authors of the bestselling PHP and MySQL Web Development. They’re from Down Under, and, as such, have cool accents.


PRO::PHP Interview With Andi

Today, PHP Architect and Pro PHP Podcast held their first live podcast (Interview with Andi Gutmans) since PHP Architect announced their “acquisition” of the podcast. However, due to some technical difficulties, the live feed was canceled after about fifteen minutes into the interview, and the audience was unable to participate in the Q&A session at the end.


Technical Vocabulary and Grammar

This is in response to Chris Shiflett’s “Technical Vocabulary and Grammar” post. My comment became so long that I decided to blog it instead.


Peruser MPM for Apache

A while back, when I was doing some research for a talk on server-side security for PHP, I looked into various “secure” methods for setting up a server for multiple users. Despite my search, I couldn’t find a simple and effective solution for managing a server with a large (and untrusted) user base (as is the case with many virtual hosting companies). Sure, there’s PHP’s safe_mode, but its “safety” is misleading at best. There’s also open_basedir, which helps a little, but it’s not quite enough. I also looked at jailing Apache (both the hard way and the easier way), but even then, all user directories have to be in the root jail, and any user can still read the readable and write to the writable files of another user in the jail.


PECL Input Filter

Lately, there has been a good deal of discussion on php-general concerning filtering input. Richard Lynch even tossed out a few of his ideas concerning the use of a $_CLEAN superglobal variable that would merely serve as a reminder to programmers (through its constant use in the PHP manual) to filter input as a “best practice” (see here and here). Furthermore, on Chris Shiflett’s blog, Richard comments that “[s]urely our base solution for minimal Security should be a fundamental part of the PHP language, not some add-on second thought.”


Web 2.0 in China?

Via Planet Web 2.0, I found this post by Richard MacManus about an English blog discussing Web 2.0 in China: the China Web2.0 Review. Looking at the blog, it appears that China will soon host its own blogging conference in Shanghai.


A Fortune Cookie for Web 2.0

I’ve been giving a lot of thought to Web 2.0 lately. Specifically, I’ve been thinking about tagging and collective ownership (and sharing) of information. While these aren’t necessarily Web 2.0 in and of themselves – indeed, Web 2.0 is merely (depending on your thought-leader of choice) the notion of the Web as a platform – I think they are becoming integral parts of the concept, and I think they complement one another.


Are We Ready for Web 2.0?

By now, you’ve probably heard of the latest browser craze known as Flock. I call it a craze, and really it is just that; the hype for this browser came when it was announced and long before there was any code or builds to view. It seems that this kind of hype occurs all too often these days, and I even find myself wrapped up in it occasionally. And why not? It feels good to know that the industry wheels are churning again, that there’s money in the air – or, at least, the hint of it, anyway.


Essential PHP Security and MD5 Reversing

I’ve just finished reading Chris Shiflett’s Essential PHP Security, and I have to say that it’s a great book. It’s very small – weighing in at only 109 pages (including the appendices and index) – but I think Chris feels this is its main draw. Indeed, it’s a quick and easy read, but that doesn’t mean it’s lacking in thoughtful and careful attention to detail – on the contrary. Rather, Chris has created a very concise and easy-to-read guide to Web application security. The language is clear, as are the examples.


What's Good for Zend is Good for PHP

I began this year with the optimistic outlook that it would be the “year of PHP.” Indeed, little did I know that this hopeful view would come true. With astounding and visionary statements from such prominent figures as Marc Andreessen, who recently joined the board of Zend Technologies, Inc. – “when it comes to the Web and Web applications, Java is not the right language” and “PHP is to 2005 what Java was to 1995” – the forecast for PHP looks bright and sunny.


Tips & Tricks: Input Filtering, Part 2

You’ve heard a lot of buzz about security in PHP, lately, but you’re still confused about this ‘input filtering’ thing? Ben Ramsey lends a helping hand in part 2 of his mini-series on this technique.

A photograph of me wearing a "Filter Input, Escape Output" t-shirt

Filter Input, Escape Output T-Shirt

So, I decided to have a little bit of fun, and I was feeling creative one day. Thus, inspired by George Schlossnagle, who’s made his own PHP T-shirts, and a picture I took of Chris Shiflett during his talk at OSCON, I decided to create PHP’s very own security mantra T-shirt bearing none other than the likeness of Chris Shiflett. I hope I don’t owe him money for this…maybe just a beer, but no money, Chris.


The Merge Has Begun

I just thought I’d point out that Andrei Zmievski announced today the official merger of Unicode support into PHP. Those who decide to make modifications to certain parts of the codebase during this time, says Zmievski, will suffer painful consequences (e.g. memorizing the entire Unicode character set…in binary).


Tips & Tricks: Input Filtering, Part 1

This year has seen an increased focus on PHP security, and this is good for the language, developers, and business community. One phrase that comes to mind when discussing secure coding practices is Chris Shiflett’s mantra of ‘filter input, escape output.’ While we know what this means in a general sense, practical examples elude us. Ben Ramsey provides part one of his input filtering series, chock full of code examples.


Tips & Tricks: CAPTCHA That Form

Has your blog (or that of a friend) been inundated with comment spam? Columnist Ben Ramsey brings back the Tips & Tricks column with an overview of ways to prevent this annoying side-effect of running a publicly-commentable website.


Atlanta PHP July Meeting

Tomorrow marks Atlanta PHP’s fourth consecutive, regular meeting at New Horizons in Tucker, GA. Originally, Matt Kern was slated to present a talk on Ajax, but he is now gearing up to move to Oregon, so he is not able to prepare his presentation. Thus, I have taken up the reigns again, and I will be presenting a talk that I’m preparing for some of the fall conferences (in the event that my proposals are selected).


Attn PHP Bloggers: Help MIT Study

Take part in this MIT survey to help them gather data about bloggers and the blogging phenomenon.


Web Services Find a New Home: Tiger's Dashboard

I’ve been toying with the realization of what this means over the past few days – ever since I upgraded to Tiger, actually. I’ve also searched around the Web for articles, but I haven’t found any, which begs the question: Has no one yet realized what’s happening here, or is everyone so entrenched in the Windows vs. Linux discussions that this is completely escaping the radar of the Web development community?

A screenshot of my OS X Tiger dashboard

My Tiger Dashboard

I just upgraded my Mac to Tiger this morning and had some fun playing with the dashboard widgets (and downloading new ones).


Thoughts on Ajax

I was recently asked about my thoughts on Ajax, and I thought my response would make for a good, though-provoking post. Here’s how I responded:


TagCloud php-news Cloud

I created a php-news cloud at TagCloud, a new service that launched this week. TagCloud accepts RSS feeds and uses the Yahoo! Content Analysis Web service to create an automated folksonomy for the posts in the feeds. In short, it guesses at the tags for each post (based on the post content) and organizes the posts according to those tags. Then, it creates a “cloud” of the tags to show frequency.


Happy Birthday, PHP!

Ten years ago, when Rasmus Lerdorf gave birth to Personal Home Page Tools 1.0 little did we know that it would grow and mature into the PHP: Hypertext Preprocessor that it is today. For that matter, far be it from any to predict (at that time) that an entire sub-industry would be created from it. So, today, on the 10th birthday of PHP, let me share my story and early experience with PHP, as others have been doing.


Atlanta PHP Meeting Tomorrow

Atlanta PHP is having its third regular meeting in a row tomorrow at New Horizons in Tucker, GA. While the location may not be the greatest for everyone, it’s a good thing to have a consistent location when just starting out like this, and I think it’s been quite an accomplishment to have three meetings in a row. Thanks to George Jempty who got the ball rolling and thanks to Matt Kern who got our Web site in order. And especially thanks to all the members who have attended meetings or supported us in other ways!


PHP Conference Materials Posted

FYI, the materials for the 2005 International PHP Conference Spring Edition are being posted to the conference materials page as they become available (in other words: when the speakers finally get around to e-mailing them to S&S.)


Amsterdam Slides Posted

For those of you who have been waiting for the slides for my IPC talks, I have posted them on my talks page. There, you will find PDFs for my frameworks, PHP security, and PHP-GTK talks. Enjoy.


What Is an Enterprise Framework?

Aside from the learning and networking aspects of conferences, another great by-product of attending a conference is the sharing of ideas. I came away from the International PHP Conference reinvigorated with new ideas and techniques and applications I want to try out. Also, I came away with a great definition for the ever-intangible “enterprise framework.”

A photograph of PHP developers on a tram in Amsterdam

International PHP Conference Redux

As I mentioned earlier, I was unable to find any time to blog during the week of the International PHP Conference in Amsterdam. This was due to several factors including, but not limited to, the lack of high-speed Internet connectivity and the sheer fact that I was largely unprepared for my talks. Sure, I had my outlines and slides, but I didn’t quite have all the examples and screenshots on the slides. This required much of my time during the early part of the trip, and so my brain didn’t want to think in order to attempt any sort of formulation of thoughts about the conference or the trip in general.


Leaving Amsterdam

Well, I didn’t blog during the conference at all, which is a great shame. I had hoped that I would be more active with the official conference blog, as well, but I didn’t end up posting anything to this. Of course, a great hinderance to posting was the great lack of Internet connectivity here. We can only connect to the Internet from the hotel lobby, and then we must pay for specified lengths of time. The conference center wasn’t much better, though Toby set up a router, but I wasn’t able to sit down long enough during the breaks to formulate any coherent thoughts to post.

A photograph overlooking a canal in Amsterdam

Amsterdam Arrivals

8:10am CET (Central European Time) marked the end of my neverending 9-hour flight from Atlanta to Amsterdam. Unfortunately for me, this was also 2:10am EDT, the time my body thought it was.


Fun With Google Maps (Spaghetti Junction)

Just taking a few minutes to have some fun with Google Maps. Here’s the Tom Moreland Interchange in Atlanta (a.k.a. Spaghetti Junction).


Google Gulp!

Egads! When will Google’s innovation find its end?!


Yahoo! 360 Impressions

As I mentioned earlier, I had the privilege of meeting Esther Dyson and briefly discussing Yahoo! 360. Here’re a few links to blog posts by others who attended what I’m calling the “360 summit” that Yahoo! hosted on Thursday:



Really only a two-day event, the NTC wrapped up with a closing reception and a few words from the new N-TEN director. The crowd of nearly 800 attendees had thinned down to only a hundred or so, and I was left alone to fend for myself, so I found Andy and the NPower gang (since I had met them earlier through my boss) and decided to go out to dinner with them.


Discussing Flickr With Esther Dyson

Esther Dyson (of ICANN and EFF fame, among many other things) gave a sort of informal interview this morning at the NTC in Chicago. The interview had this “fireside chat” feel to it with two antique-looking chairs seated at angles on the stage, plants surrounding them. You could tell they were trying to evoke some sort of cozy atmosphere. I’m not sure whether the atmosphere went over well, nor did the interview; the interviewer did not seem to steer the questions in the direction suggested by the title of the plenary: “What’s New. What’s Next. What Matters.” Then again, I was too busy going through my feedreader to pay much attention.


Name Dropping at the NTC

So, I could shoot myself in the foot for forgetting to bring my digital camera for this trip. Before walking out the door, I distinctly remember hearing my wife say, “Don’t forget to take the camera; I put it with your stuff.” But what do I do? I forget within moments to grab the camera. What’s more is that I would’ve loved to have had my picture taken with a few people I’ve met while here. So, I’ll use this time to drop a few names of the more prominent (IMO) and, to me, fascinating figures I’ve met:


Mena Trott Speaks at N-TEN

It’s clear from Six Apart’s acquisition of Live Journal, Yahoo!’s purchase of Flickr, the Yahoo! 360 service, and Microsoft’s MSN Spaces service that the blogosphere is changing. Jeremy Zawodny posted yesterday a few of his thoughts on where he thinks the future of certain blogging software and services is headed. It’s a fascinating topic to consider.


Brain Bulb, The PHP Consultancy, Launches

Today, Chris Shiflett announced the launch of Brain Bulb, his new PHP consultancy. His new venture is already showing signs of great success, and the future looks promising. I thought I’d take a moment to promote him.


PHP Get-Together in Chicago

Thanks to Richard Lynch and Chicago PHP, it looks like we’ll be having a nice PHP get-together in Chicago next Thursday night, March 24 at 6:00 PM CST. Details follow:


N-TEN NTC and Penguin Day Chicago

This is sort of a continuation of yesterday’s post. I’ve received one comment, and I intend to respond as soon as I hear from several others.


Penguin Day Chicago

I will be attending Penguin Day Chicago (a conference for non-profits and open-source developers to network and “demystify free and open source software for social change organizations”) and am interested in whether anyone else from the PHP community will be in attendance. The conference is on Saturday, March 26 and is offered for the low price of $60 to individuals.


PHPSC eWeek Interview

As I’ve mentioned before, eWeek is my favorite industry news magazine. So, when Chris Shiflett mentioned to me yesterday that eWeek contacted him in regard to the PHP Security Consortium (PHPSC), I was ecstatic. It appears that the folks at eWeek have been keeping tabs on PHP–not that they don’t cover open source technologies; on the contrary, they give generous attention to the open source movement and Linux. I was just a little bit surprised to see them interested in covering PHP.


PHPSC Slashdotted

The PHP Security Consortium (PHPSC) received its first Slashdot post today. Chris was worried about whether the server could handle heavy traffic. I guess this will be its first true traffic test. If it can handle this, it can handle just about anything. ;-)


PHP Security Consortium Official Launch

An international group of PHP experts today announced the official launch of the PHP Security Consortium (PHPSC), a group whose mission is to promote secure programming practices within the PHP community through education and exposition while maintaining high ethical standards.


Bob Parsons Blogs With Serendipity

I found it interesting, after clicking a link to his blog on the Go Daddy home page, that Go Daddy founder and president Bob Parsons uses PHP-powered Serendipity.


International PHP Conference 2005 - Spring Edition

Yesterday, I was informed that several of my proposals have been accepted, and I will be presenting at the International PHP Conference 2005 - Spring Edition in Amsterdam in May.

What can I say? This post is really a blatant attempt to help the search-engine page rank of the portrait studio my wife works for. I’m shameless.


Bloggers' Bill of Rights

I read this on Jeremy Zawodny’s blog, and it made me want to rant, too. The question raised here is really: to what level of “free speech” do I have when it concerns talking about my job on my blog?


IBM Offers 500 Royalty-free Patents

Via Donna Wentworth of Copyfight: IBM announced today that they will be granting open access to 500 of its patents to developers of open-source software. This does not mean that IBM is no longer interested in the patents or will no longer hold them. On the contrary, IBM plans to maintain ownership of the patents while providing royalty-free access to open-source developers. This move will likely spur open-source development of technologies recently restricted. Specifically, Linux is poised to benefit greatly.


Tsunami Pictures

I rarely use this blog to discuss something that’s not related to technology, but someone sent me a link to these satellite before and after pictures of the devastation caused by the massive ocean wave. What this wave did is incredibly awesome with all the meaning that this word used to embody.


Upgrading to Wordpress 1.5 beta 1

I’ve upgraded my blog to Wordpress 1.5 beta 1 (the latest nightly snapshot). Thus, things look a bit different around here, in case you haven’t noticed.


2004 Highlights

Since I like to copy Chris Shiflett as much as possible, I decided to create my own list of 2004 highlights. My list is relatively short, though it’s a start, and I’m quite proud of my personal achievements. I began 2004 as a no-name in PHP-dom; now, at least five people know who I am.


A Language-Agnostic Java?

In a recent post by Tim Bray, a Technology Director at Sun Microsystems, he describes a “summit” held in which the leading developers of popular dynamic languages were invited to Sun to spend the day discussing issues in and surrounding the use of their languages and the projects created to make them work on the Java platform. I speak mainly of Jython (Python on Java) and Groovy (a mixture of Python, Ruby, Smalltalk, and Java).


PHP 5 Unleashed

Over 12 million Internet domains worldwide use the PHP language to power their websites. If you are a programmer included in this group, or would like to be one, you should pick up a copy of PHP Unleashed. The definitive guide in PHP programming, PHP Unleashed thoroughly and authoritatively covers the release of PHP 5, as well as advanced topics not found in other books.


Firefox Ad Runs in NY Times

On Thursday, December 16, the Firefox full-page ad finally ran in the New York Times. In fact, they apparently received enough donations to take out a full, two-page ad.


Teaching Parrot to Say PHP

In his article, Ben takes a speculative look ahead to PHP 6 and the Parrot VM. Policy and Procedure has adopted a rudimentary set of policies and procedures. This adoption is a step in the right direction to get the early momentum of the community moving again. Included is a “silence is acceptance” policy and a 72-hour rule for decisions. In addition, those proposing actions must be ready and willing to carry out the tasks of fulfilling the proposal.


Case Studies for PHP-based Frameworks

I’m currently looking for case studies of companies that have used a PHP-based application framework. The particular framework is unimportant, as long as it is PHP-based.


PHP 5 Unleashed Shipping in December

Since, John Coggeshall posted about this today, I suppose it’s okay for me to do the same. :-)


php|architect to Publish Books

It seems that php|architect will be launching two series of books next year. One, their “php|architect Guides,” will feature books focused on a single, niche subject of 250-300 pages. The other series, presently referred to as “NanoBooks,” will be less than 100 pages (basically, these are described as being like expounded-upon php|a articles).


Passing the Zend PHP Certification Exam

It’s been three weeks since I passed the Zend PHP Certification Exam, and I’ve been waiting to receive my certificate before I blogged on it so that I could scan it and display an image of what it looks like.


Lunch with Patrick and Camden

Today, I had lunch with Patrick Reilly and Camden Spiller. Both were in town for the LISA conference at the Atlanta Marriott Marquis, so I met them there and we walked a few blocks to Max Lager’s for lunch.


PHP Magazine 01.05 Preview

Indu Britto released today a preview of the 01.2005 issue contents of PHP Magazine. Included will be Aaron Wormus’s coverage of the PHP Conference and MySQL ComCon, as well as articles covering eCommerce solutions with PHP, MySQL 5.0, creating a “J2EE-like environment with PHP,” XML and Web services, and my article on Parrot and the Pint PHP interpreter for Parrot.


Live Blogging at the PHP Conference

Via Tom Sommer’s weblog, I can now follow along with the activities taking place at the PHP Conference and MySQL ComCon. They’ll have live blogging from the conference floor so those of us who can’t make it to the conference can at least live vicariously through blogs.


A Sin to Use Firefox?

I have one word for these cry-babies:


Scheduled for the Zend PHP Exam

I’ve scheduled my Zend PHP Certification exam appointment at a local testing center for Friday, October 29 at 2:00 PM.


Netscape Turns 10

Ten years ago, Netscape launched their Navigator Web browser. c|net is celebrating with special coverage.


Reaching the Finish Line

<gloat>So, I’ve won the race, and I’ve confimed it with Chris Shiflett! Woo hoo! </gloat>


Atlanta PHP Meetup Group?

I just stumbled across this today when doing a search on “Atlanta PHP.” Apparently, there’s a Meetup group in Atlanta for PHP, and they had a meeting tonight.


Atlanta PHP Soft Launch

Today, Atlanta PHP softly announces their “soft launch.” That is, this is a launch without all the bells and whistles and media attention generated from the distribution of press releases. There will be a time for that. For now, we wish to direct the attention of prospective members and interested parties to our mailing lists, which are now live, active, and ready for subscriptions.

I found out about through a post by Chris Shiflett. In short, it’s a place to store and share your bookmarks in a central location, and it has a built-in community aspect, showing who has bookmarked the same links. I’ve already got over 125 bookmarks in my collection.


Notes/Slides from OSCon 2004 Session?

I’m looking for any notes or slides for the OSCon session “Chasing the Dragon: Compiling PHP to Run on Parrot.” If anyone has anything related to this session, please send it to me ASAP.


Artima Developer Buzz Blog

I’ve followed Harry Fuecks’s lead and joined the Artima Developer Buzz community.


MySQL ComCon

This morning, via Zak, I heard about MySQL ComCon, which occurs concurrently with International PHP Conference in Frankfurt, Germany. Both conferences are hosted by the good folks at Software & Support Verlag.


MySQL Licensing Questions Answered

Back in March, I mentioned a MySQL FOSS Exception drafted to allow other types of FOSS licensing models to use and distribute MySQL libraries. Apparently, questions about MySQL licensing issues continue to drive developers insane, so Zak Greant has written an article for PHP Magazine that discusses “The Top 7 MySQL Licensing Questions.”


Uninformed Bloggers At Dragon*Con

I attended “America’s largest, multi-media, popular arts convention,” Dragon*Con, this weekend. I went a few years back, so it was a privilege for me to go again this year. There are all sorts of tracks and panels focusing on a wide variety of topics. My favorites include the TrekTrak and the Tolkien Track hosted by However, I noticed a track by the name of Electronic Frontiers Forums, hosted by the (now defunct?) Electronic Frontiers Georgia group, which is associated with the EFF. While they offered a wide variety of panels covering such topics as “Web Cam Girls” and the “FCC Broadcast Flag,” they didn’t offer much discussion on more technical topics for the hard core programmer. Still, their discussions on Web culture did intrigue me, and since sociology and Web culture are among my interests, I managed to make it to the “My So-Called LiveJournal (.com)” panel.


Weekend At Dragon*Con

I just spent the past weekend with my wife at Dragon*Con It was a great and exciting convention, complete with all the geeks, freaks, and their costumes.


Getting PHP installation to update

A while back I mentioned a problem I had with seeing the changes made to PHP after running a make and make install. I couldn’t see the new build date or the changes in phpinfo(), nor could I see the new build date with php -v. I was perplexed and frustrated.


Larry Wall Witticisms

I found this collection of quotes from Larry Wall, creator of Perl. I laughed my head off at a few of them.


Happy 13th Birthday Linux!

From a Slashdot post today is the official Linux birthday!


Making a GUI Mess of PHP

PHP-GTK has been around for several years now, and you may have heard what it can do - allow developers to create graphical applications using PHP. Egads! It sounds as if it’s the Holy Grail of PHP, something that can take PHP to new heights, breaking it free from the bonds of the Web. In fact, it can do just that, as we see with a practical application: a simple text editor.


Does a PHP programmer need a CS degree?

I’m proud of my degree. It makes me happy that I have one and that I can consider myself worth more to people in the business world because I have it. But I’m a programmer, and my degree, well, let’s just say that it has something to do with a language and that’s where the similarities stop.


PHP 5.0.1 released…and I wasn't paying attention

After waiting around for several weeks with the words “hope to roll PHP 5.0.1 soon” or even “tomorrow,” the day has finally come, and I wasn’t paying any attention because I was too busy at the office trying to wrap things up on my last day.


Wordpress syntax hiliter

I’m just trying out a nifty syntax hiliter plugin for Wordpress. This particular plugin handles HTML, CSS, PHP, Java, and SQL. I’ve modified it a little bit to suit my own personal tastes.


PHP-GTK 1.0.1 released!

And you thought they were done.


Interesting disposable e-mail service

Through a post over at Tom Sommer’s weblog, I found this interesting disposable e-mail service called Mailinator.


Switching to Wordpress

When you hit my site today, you probably noticed a few different things. The first thing you noticed may have been that you were whisked away to a new URL. The second, and most noticable, thing was the new design.


Call for a national IT advocacy group

Each week, I receive a complimentary issue of eWeek in my mailbox. I receive complimentary issues of other magazines, which I usually promptly toss aside, but I never toss aside eWeek. I could make a nice advertising plug for eWeek right now, but I won’t. I’ll simply say this: I read it because of Jim Rapoza’s “Tech Directions” column.


Atlanta PHP job

I have recently accepted a Web application development position (heavily involving PHP) at Hands On Network (formerly CityCares) in downtown Atlanta. This leaves the position I have with my previous employer, EUREKA! Interactive, wide open, and he needs a developer that has a strong command of PHP (and also ASP) to take over where I’ve left off. Because of my good relationship with him, I have informed him that I would try to provide him with a list of local PHP developers before I leave, so that he has an easier time finding someone to replace me. The company is a creative place to work, and the culture is very relaxed.


Sun buying PHP/Zend?

I logged on today to find a very interesting and controversial article at (via this post) concerning the future direction of PHP. In short, the author surmises that the changes made to PHP 5, essentially making it more Java-like, are a step on the path to a Sun-influenced, if not owned, PHP. It presents some stark evidence, all circumstantial of course, that points to this direction, saying that “the long-lasting popularity of LAMP environments (Linux, Apache, MySQL, PHP) will soon be replaced by SLOP environments (Sun, Linux, Oracle, PHP).”


Atlanta PHP update

The Atlanta PHP front has been very slow and pretty much non-existant since March. In fact, the last time I spoke with Matt Kern about it was probably four or five months ago. I’ve not seen him in #atlphp on Freenode IRC in a while. Things had been so slow that I thought I might put up something temporary at, a domain I own that forwards to Matt’s


Blog inactivity

Yes, it’s true. I have succumbed to the level of blogging about not blogging. It’s the lowest form of the blog.


Jumping on the Gmail bandwagon

I have joined the likes of Aaron Wormus and Tobias Schlitt in attaining a much desired status level. Yes, I am now one of the few, the proud; and I’m gloating, as well.


Porting ASP to PHP

So, I’m not the only one who’s noticed an increase in interest here. Harry Fuecks mentioned in his weblog yesterday that many ASP 3.0 developers are moving to PHP because of ASP.NET. I’m one of them, though I made the complete switch over a year ago.


Bringing Savant into the fold

One of the biggest discussions on the pear-dev mailing list right now is that of the HTML::Template_Savant proposal. Lots of people like it, others still want to do away with template engines in PEAR altogether. I won’t go into all the details about what Savant is (you can figure that out for yourself), but I will say that this discussion is reshaping the way we think of HTML templating engines in PEAR – for the better, IMO.


Who wrote Linux?

There is an interesting article by Andy Tanenbaum defending Linux and the history of Unix. Apparently, there are some out there who would like to claim that Linus Torvalds was not the sole developer of Linux and that he plagiarized code from Unix, MINIX, and elsewhere.


Of Pears and Pickles

Aaron Wormus has created an “unofficial” PEAR and PECL Weblog titled “Of Pears and Pickles” that tracks news and updates in and about PEAR and PECL. It’s a very useful and informative site, and I’ve bookmarked it and set it up in my Firefox RSS feeds. Good job, Aaron!


PHPCommunity article in PHP Magazine

In this month’s issue of PHP Magazine (which I have yet to receive, but I suppose it’s on its way), Chris Shiflett features The article talks a lot about how the project started and its current progress. However, it’s titled “PHP Community: Part I” so I’m looking forward to the next installment to see what he has to say, though I feel that part two may come as we grow nearer to the site launch.


Speaking of Google…

Speaking of Google, I found a very interesting blog concerning their very massive clustered computer. It’s well worth the read.


Google jumps on the bandwagon…a little late

A while back, I wrote about Bloomba and how Alison Overholt of Fast Company raved over its powerful search features. At the time, I dismissed the search features, my mind still lingering in the world of distinct folders and locations to store e-mail messages, files, etc. However, after reading around other places (I’ve looked for links but could find none), it seems that searching is the wave of the future. As systems and applications seek to be more and more user-friendly, they are turning to more abstract, search-based designs. In a sense, I guess they’re becoming more like the human brain (granted, I know very little about how the human brain works).



I’ve been very busy lately with my real job, so I have neglected to blog in a while, but much has been happening, so it would seem to me, in the news (especially with Microsoft and Sun and Gmail), but I’ll post on these later. For now, let me promote FCKeditor. In the process of developing a CMS for a government Web site, it was decided that we needed a WYSIWYG editor that we could embed in a Web page and use as part of our system. We looked around at many different options and decided to go with Rich Editor, a paid and licensed editor that was supposed to work well in all browsers. logo

Chris Shiflett announced the new logo on his blog yesterday. Peter Jovanovic and Richard Davey are the winning artists.


Firefox RSS reader panel

I was hunting around today for a good RSS reader, when I found something called Pluck. It sounded interesting enough, so I decided to check it out. Boasting claims of no adware/spyware, I thought, “Well, maybe it’s okay.” Still, claims or no claims, I am always wary of freeware. Nonetheless, I wanted to see what it could do and whether it was what I wanted. In short, it wasn’t. It was a plugin for Microsoft Internet Explorer. This planted another seed in my head. “What if,” thought I, “Mozilla has such an extension for Firefox?” So, I proceeded to


MySQL FOSS exception

Many will be pleased to know that MySQL is drafting an exception to allow their GPL-licensed client libraries to be included in other FOSS applications.


PHP 5 in the news

Since everyone and his brother has mentioned this on their blogs, I feel compelled to do the same. Yahoo! News posted an article on PHP 5. In all seriousness, it’s actually a good article and features quotes from PHP experts John Coggeshall and George Schlossnagle.


Bloomba update

Today, I received an e-mail in response to my comments on Alison Overholt’s “The Google of E-mail?” from Ms. Overholt herself of Fast Company She directed me to a page where she has posted several reader comments that she has received since her article went to press.


Atlanta PHP getting off the ground

Today, I had the pleasure of meeting both Matt and Jeff face-to-face to talk about the formation of Atlanta PHP. We have a lot to accomplish before we finalize anything dealing with organizational structure, but we agreed that the Web site, a mission statement, and a mailing list are of utmost importance for starting. So, look for these features soon at


The mailman came today

Just a few moments ago, I heard some steps on my front porch. It was the mail carrier, and she left Chris Shiflett’s book HTTP Developer’s Handbook at my front door! And, yesterday, the mail person came bearing Advanced PHP Programming, George Schlossnagle’s book.


#atlphp IRC Channel

For those interested in Atlanta PHP, Matt has set up an IRC channel (#atlphp) on Freenode. We are working on getting some information up at the site ( and a mailing list once DNS issues are resolved. Until then, join us at #atlphp!


Making It Valid: Telephone Numbers

When relying on your end-user to supply information in the proper format, you’re S.O.L. when it comes to doing anything with that data. It’s best to use some proper PHP tools to validate your data and make sure it’s in a format your application can read before passing it along to other places. Follow me as I take a look at validating user-entered data in this first installment of what I hope to be a continuing series.


Atlanta PHP

Since the news of reached me and I was connected to the New York PHP Web site through Chris Shiflett’s site, I have been toying with the idea of starting a PHP group in Atlanta, Georgia. It strikes me as odd that there isn’t already one.


Apache License v2.0 versus the GPL

Rich Bowen mentioned this little “feud” in a short post on his Web site. According to the GNU web site, the Apache Software License version 2.0 (ASL 2.0) is listed as being incompatible with the GPL. Apache claims they have no clue where this comes from, and they stand by their belief that the ASL 2.0 is, in fact, compatible with the GPL. Apparently, it is believed that Slashdot may be fueling this “inaccurate” perception.


Showing All Declared Classes

Today on the PHP-general mailing list, a question was asked regarding the usage of a new class in PHP5 beta 4. Being the ignorant programmer that I am, I responded asking where this person saw the class in question. I thought it was perhaps a PEAR package (since it wasn’t in the PHP manual) and that the person was merely a newbie asking a dumb question. (You know the old adage that there are no stupid questions; well, I disagree when the PHP manual has been completely overlooked in favor of just asking blankly on the mailing list.)


Bloomba Over Mozilla?

I just read “The Google of Email?” in the March issue of Fast Company. In this article, Alison Overholt examines flaws in Microsoft Outlook and looks for a competing e-mail client to take its place. The good alternative client, she concludes, is Bloomba. The folks at Bloomba must’ve paid her for this blatant attempt at publicity; she doesn’t review any other competitors. The major reason she recommends Bloomba is for its search features. The “powerful [search] feature makes folders largely unnecessary,” says Overholt.


What the GPL?!

I’m working on a personal project that I will eventually release under the GNU General Public License (GPL) in order to benefit the community. I would tell you the details of the project, but, since it’s another content management system programmed with PHP, you’d probably ask why we need another one like you need a hole in your head. So, let me humor myself and build it.

Back in December 2003, Chris Shiflett announced on his Web site (an announcement that was carried over to his intention to launch a site for the PHP community by the PHP community. He filtered through mass amounts of e-mail in response to the announcment and set up a wiki at Since then, the site following has grown by leaps and bounds, though the site lauch may not be for quite some time. This is an exciting opportunity for the PHP community, and I’m excited to be involved. The advent of this community site has inspired me to finally put this Web site together and start doing what I enjoy most: writing.