Review of 2006 NYPHP Convention
June 12-16, 2006, Manhattan, NY
I attended the New York PHP Conference held in New York City, June 12 - June 16, 2006. Pre-conference training sessions were schedule for the first two days and the remaining days were for the conference itself. I rode the train down to the city and back home. In the city, I stayed with friends in Brooklyn and took the subway back and forth to Manhattan for the conference events.
The first session I attended was a beginner's class in PHP taught by Jeff Siegel. I assumed the class was at the New Yorker Hotel where the rest of the conference was being held, but instead it was at a special training office 14 blocks away! Just imagine my surprise arriving at the hotel, expecting a bunch of PHP geeks and instead finding a cosmetics conference! I managed to find where I needed to go and showed up about an hour late- enough time to miss personal introductions. I took a seat in the back of the room and apologized profusely for not having read the promotional material more carefully.
The philosophy was "learning through immersion" and the class moved at a pretty quick pace. Those with some programming background but new to PHP would probably have gotten the most benefit from the class. For programmers such as myself, it was a good refresher of some of the basics we all lose sight of over time. We covered everything from "Hello World" to a complete (albeit simple) database driven application with authentication.
The following day brought the second part of the beginner's class. We went more into sessions, cookies and then some examples of using PHP to generate PDF documents.
In addition to enjoying Jeff's dry humor, I learned a few new tid-bits of information... one of which I'll share now as I'm surprised I haven't run across it before: The name/value of the submit button isn't sent to the server in Internet Explorer if the user presses enter to submit the form. The work around is to place a hidden field and check for that instead of the submit.
Before I knew it, Wednesday had come and the conference proper had begun (this time at the New Yorker Hotel for certain). I decided to attend the session entitled "Maximum Velocity MySQL" lead by Jay Pipes. He presented a 3 hour talk filled with a lot of good information and practical advice on getting the most out of MySQL.
Jay stressed the importance of breaking out of the procedural mindset when programming SQL and instead the need to think in set theory. Procedurally-minded queries are more work for MySQL and execute much, much slower; use standard joins instead of correlated subqueries. Jay also stressed the importance of understanding how the different storage engines work. Knowing their differences helps one to choose the best engine for a particular table and to write the most efficient queries.
As a developer, I found the discussion of the different table storage engines and the side by side comparisons of good and bad queries the most helpful. I'll be spending some time in the near future rewriting some of the queries in my applications based on the examples in his talk.
The coolest trick I learned and will share is the most efficient way to load a large data set from a CSV file when creating a new database table. MySQL 4.1.4 added the CSV storage engine which is designed to work with CVS files, so it's possible to drop the file into MySQL's data directory and then issue an ALTER TABLE query to convert it to a more appropriate storage engine and identify any indexes.
After Jay's session was lunch (the potato salad was delicious) and then I attended Joe Stagner's presentation "PHP Rocking in the Windows World." He supposedly talked about PHP development and deployment on the Windows platform... he said Microsoft does have a dynamic language strategy and the upcoming IIS 7 should be much more PHP friendly thanks to dialogs between Microsoft and Zend. One can only hope.
But I have to admit I was mildly let down by Joe's presentation. I was hoping to see demonstrations of some of the really cool things PHP can do on Windows, such as printing, registry access and COM/.NET integration. "Really cool" is a subjective term, though, and while he did demonstrate some interaction with a .NET web service and reading the contents of an Excel file, the presentation came across more like a Microsoft sales campaign. We saw more VB code than PHP! He never posted his presentation slides on his website as he promised, either.
The conference's keynote addresses started at 8:00 on Thursday, which meant I had wakeup at 6:30 to ride the Subway from Brooklyn to the hotel and be on time. Hans Zaunere, President of New York PHP, introduced Rod Smith from IBM and Rasmus Lerdorf from Yahoo! (and the mastermind behind PHP) as the keynote speakers. Their addresses were more like presentations than the typical keynote address one might be used to. Rasmus' was by far the more exciting of the two as he took a web application that served 17 page serves a second and through a series of minor tweaks and adjustments boosted it's speed to 1180 serves per second! His slides are available at talks.php.net/show/nyphp06/0.
After the keynotes I made a point to get my photo taken with Michael Southwell... I had the privilege of tech editing his and Chris Snyder's book, Pro PHP Security, published by APress and I thought a photo would be cool. I also had my picture taken with Rasmus later in the afternoon (I'm such a groupie!).
Thursday's and Friday's sessions were shorter than Wednesday's, running about an hour to an hour and 15 minutes each. Sam Heisz presented a session entitled "Quercus: A 100% Clean Room Implementation of PHP in Java." As the title alludes to, Quercus is an implementation of PHP written in Java by the company Caucho. I thought it would be an interesting talk to attend since I've been doing some reading on compiler design and language construction lately.
The project looks promising for developers who want to leverage existing Java code in a more transparent way than what was previously made available by PHP, and compiling PHP down to Java bytecode offers several benefits such as thread-safety. Performance benchmarks were impressive, too. But with all good things there come some trade-offs as well... existing debuggers won't work since Quercus compiles for the JVM, and its integrated with the Resin web server so it can't be used with another web server such as Apache or IIS.
I ate yet another delicious lunch and then attended David Sklar's session entitled "Metaprogramming with PHP." He covered features such as magic methods (__get(), __set() and __call()), reflection, the SPL and operator overloading. He also touched briefly on how to write a custom stream handler and how the pdo_user extension can be used to write PDO drivers in PHP for custom data sources. It's not necessarily the type of programming the average developer will have a need to do, but it's definitely something cool to play with... and I'll be doing just that in my spare time. David has placed the slides from his presentation on his site at www.sklar.com/blog/archives/93-Metaprogramming-NYPHPCon-2006.html.
I concluded my day by attending "Efficient Debugging with Xdebug," presented by Derick Rethans. Derick is responsible for Xdebug so naturally he was very knowledgeable. He went through the steps for obtaining and installing Xdebug and then ran through some demonstrations. He's made the slides of his presentation available at www.derickrethans.nl/talks.php.
I meandered about the exhibit booths at various times throughout the day; Adobe, AccessIT Group Inc, Community Connect Inc, IBM, Oracle and Right Media were exhibiting products and handing out marketing materials. I got all sorts of marketing goodies including folders, software, pens, key chains, frisbees and even a stick of sun block! (I promised one of the Oracle reps I'd say extra nice things about his company because he gave me the last copy of Oracle Magazine they were handing out.)
I came down with some nasty flu-like thing Thursday evening which knocked me out of commission and forced me to miss Friday's events. Perhaps I drank too much of the local water or forgot to wash my hands once after riding the subway, who knows... but it was a bummer because there were two sessions I had really, really wanted to attend: "Web Application Security Crisis" by Tom Stracener and "PHP6 and Unicode: The Tower of Babel" by Andrei Zmievski. Thankfully, I emailed Stracener and he sent me the slides to his presentation. Of course it wasn't the same as being there in person, but it was better than missing out entirely.
Excluding the whole getting sick thing, I had a wonderful time attending the New York PHP Convention. I learned a great deal and had my creativity reenergized. I had the opportunity to make new friends (shout outs go to Ken, Chris and Walter) and finally meet some old online-friends face-to-face. I would recommend attending such a conference to anyone if they're able; it's an excellent opportunity to learn, socialize and network.