Dutch PHP Conference 2009 Retrospective

DPC ended last weekend, so I’m a little late with my write-up. However, the event was sufficiently memorable to still be fresh in my mind.

Like the vast majority of attendees, I was massively impressed by the superb selection of talks and the attention to detail inherent in every aspect of the organisation of DPC ’09. Big thanks to the Ibuildings folks for this. One example of the love they poured into the event is the conference introduction video, which was played on a large screen before the opening keynote. It included customized avatars for every speaker, including me… even though I was a very late addition to the speaker list!

Performance and scalability seemed to be the unofficial themes throughout the conference. Many talks were explicitly about these topics, and even the talks which weren’t consistently evoked them. Between sessions, it was common to hear developers discuss master/slave database topologies or debating the merits of nginx and Varnish.

As well as attending and giving talks, Jonathan and I managed a stand showing demos of WebSphere sMash. We had lots of interesting chats with PHP developers about the virtues of integrating PHP with Java and some of the misconceptions surrounding Java performance. sMash’s browser-based tooling for rapid application development went down very well too. If you’re interested in this, don’t forget to visit http://projectzero.org and give sMash a try!

Here is an overview of the talks I attended. Slides for most talks are on techPortal.

Day 1

“PHP: People, Code, Ideas” by Andrei Zmievski (Opening keynote)

Andrei kicked off by amplifying the community buzz. He illustrated how we have all shaped PHP throughout its history and will continue to do so into the future. TestFest got a mention. He talked about how PHP is a “ball of nails” (as originally put Terry Chay) – a sometimes ungainly, but very powerful tool that can attack pretty much any problem it is thrown at. Interestingly, he suggested that PHP 7 might be the release in which to carefully consider adding significant backwards compatibility breaks, so as to improve the language and the runtime (perhaps easy for him to say, since he is release manager for PHP 6 ). One example he gave was making identifiers case-sensitive. Having witnessed the overhead of method lookups in PHP, and seen how a large part of the cost can be attributed to case-insensitive string comparisons, I think this sounds like a good idea. Perhaps runtime caching of the invocation target at the call site would help even more, in cases where the call site is hit multiple times within a request.

“Keeping Web Applications Lean and Mean” by Robert Brouwer

This talk seemed to be a disappointment to much of the audience. It began by describing very high-level approaches to monitoring Web application performance. The lack of practical examples (e.g. tools, implementation approaches etc…) was a little frustrating. Fortunately, several members of the audience were very pro-active and brought up some interesting question and opinions. Finally, the talk described RUEI, a network-layer monitoring tool recently acquired by Oracle. It is designed to sit at the front of a server farm and collect data on all inbound and outbound network traffic. It also provides a front end to mine this data, allowing some bottlenecks to be identified by establishing which kinds of HTTP requests are slowest to process. I think people expected to hear more about performance analysis at a finer level of granularity (e.g. how do I establish which part of my PHP code or which database query is slowing down a given request?). This was barely touched upon.

“Grokking the REST Architecture” by Ben Ramsey

I’ve seen a number of talks on REST. This one was a really solid overview of the basic principles. It would be great to see a talk that delves into some deeper examples of RESTful implementations and the issues that are encountered in real-life scenarios.

“Alternative Databases” by Scott MacVicar

Non-relational databases like CouchDB are becoming a seriously hot topic. Scott delivered clear and entertaining insight into their history and virtues, which include scalability and flexibility.

“Surviving a Plane Crash (NU.nl)” by Peter C. Verhage

Nu.nl is a hugely popular Dutch news site which handles 7-15 million page views per day. Peter gave an overview of the site’s infrastructure, which enabled it to cope with a massive traffic spike after a plane crash near Schiphol airport. The techniques he listed included:

Rendering as much as possible to static HTML.

Using edge side includes for content that changes occasionally (e.g. “top 10 stories”).

To conclude day 1, speakers were treated to free drinks and a delicious dinner at sunny Stand Zuid. This was followed by more free drinks with the rest of the attendees.

Day 2

“Digg: The First Two Years” by Owen Byrne (keynote)

An overview of the history of Digg, as recorded by the Wayback Machine. Kind of interesting to see what Digg looked like in its early days, but the talk was very light on technical detail, and… well… see the comments on joind.in.

“What are you talking about? Document Classification in PHP” by Ian Barber

Ian introduced some algorithms that can be used to automatically classify documents by theme based on their content, and walked through them with simple examples. One of my projects back at university involved applying Principal Component Analysis to face recognition, so I have a minor interest in dimensionality reduction algorithms (even though I don’t really understand the maths any more). Very original talk by an excellent presenter.

“PHP Compiler Internals” by Sebastian Bergmann

In what was my favourite talk of the conference, Sebastian gave an end-to-end demonstration of how one would add a new language feature to PHP. This included a guided tour of the scanner, the parser, opcode generation and opcode interpretation. He even gave a shout out to the PHP team at IBM for providing this opcode documentation. He briefly touched upon the static opcode optimisations that are currently being implemented in the engine. It would be awesome to see dynamic runtime optimisations make it into PHP one day as well.

“Trees in the Database: Advanced Data Structures” by Lorenzo Alberton

Another fascinating topic, which I hadn’t really considered before: what is the best way to represent a tree in a relational database? Turns out there are various approaches, and Lorenzo described their pros and cons with stunning clarity, given the potential complexity of the subject. So, if I ever need to store a tree in a database, I’ll be heading straight back to his slides!

“The Cal & Ivo Show” (Closing keynote)

Cal Evans & Ivo Jansch called a number of PHP celebrities (Andrei Zmievski, Lorna Mitchell, Paul Reinheimer…) up onto the stage and quizzed them on such topics as the future of PHP, what we can do to make the community even more diverse and vibrant, what makes a great conference and how to go about entering the speaker circuit. Questions were taken live from the audience and beyond via Twitter.

Throughout the conference, attendees tagged hundred of tweets and photos with #dpc or dpc09. These were collected and displayed at random on the big screen during the closing keynote. Very amusing, and great way to end the conference by emphasizing the community spirit.

Attending and speaking at DPC ’09 was a sublime experience. Thanks again to Ibuildings for the care and attention invested into organising the event. I’ll definitely do everything I can to be back next year – especially if they improve on the sandwiches.