It’s the start of a new day, and off we go to the Brewery for the second day of PHPUK 2013. Day 1 has been covered with aplomb by Javier so I’ll not go into details here, but suffice it to say that it was my first day of my first conference and I had an excellent time wandering without the hint of a clue, eyes filled with the misty wonder of a newborn. This, however, is about day 2, with a day’s worth of experience under my belt, the confidence of a conference veteran, and the bleary eyes of an early morning after a late night’s social.
The day started off well, with an excellent breakfast which I’d mostly missed out on the day before. A colleague had extolled the virtues of the porridge - the porridge - some four hours after breakfast had passed on day 1, and any breakfast able to make porridge so memorably exciting had to be tried. It was, I think, possibly the best porridge I have ever tasted. A strange thing to score a conference on, but there we have it. Moving on...
Talks - Saturday morning
We started with a keynote delivered by Martijn Verburg, The Diabolical Developer. He seemed human enough to me, but I suppose he might have been in disguise - you never can tell with Java developers. In any case, a confidently delivered talk on the subject of best practices disguised as exhortations to protect job security. Team meetings? Ha! Avoid your co-workers and manager at all costs, lest they try to find out what you’re doing or - horror of horrors - try to help. The thrust of the talk, as I understood it, could be summarised as "best practices are there to serve the developers, not the other way around". Careful analysis of team practices to make sure none of them are hindering more than they help is clearly worthwhile, and the core message of "the developers and the project are the most important thing" is worth restating regularly. Unfortunately, regular but unmarked switches between irony and serious speech made the talk a little confusing, weakening the argument.
For my first talk decision I headed off to Alvaro Videla’s talk RabbitMQ Hands On, which was an introduction to - you guessed it - the messaging system RabbitMQ. My experience with messaging systems is limited to Gearman, which I found a little unwieldy for me, so I was pleased to receive an excellent introduction suitable for newcomers. Alvaro gave a strong talk aided by an excellent RabbitMQ simulator of his own creation. Whether you’re a RabbitMQ greenhorn or a veteran I strongly recommend looking out for his simulator - he plans on open sourcing it soon, but until then there’s a handy introductory video which is well worth watching. I found the talk both informative and encouraging, and has left me watching out for an opportunity to make use of RabbitMQ in a project some time soon.
My second talk was Scaling with HipHop, delivered by Sara Golemon. This was, I think, the most enthusiastic talk I attended over the entire conference. Quite infectious, really. I walked in with a passing knowledge of HipHop ("it’s sort of a PHP to C++ compiler for Facebook, right?") and walked out quite dizzy with knowledge. Sara came across as both knowledgeable on her topic and deeply passionate about it, a combination which is always a joy to find. HipHop itself is rather more than I had thought, effectively a highly tuned replacement PHP engine which analyses and converts PHP to native bytecode for storage in a database, providing an astonishing 500% performance boost over PHP 5.2. Throw in the additional PHP features, the in-house-developed streamlined web server and even the in-house IDE and it becomes clear how Facebook can handle around one billion active users.
One billion active users. One billion. Active.
I know this is kind of old news, but just think about that for a few moments. For reference, current estimates put us at around 7 billion people on the planet.
Anyway. Lunchtime! Lunch was up to the standards set by breakfast. Not much more I can say about this, except for a brief comment on the strange image of a room full of developers holding plates with those funny cup holder clips on, fighting over about twenty people’s worth of table space and even fewer seats.
I took the opportunity to cheerfully obliterate the current record for the Inviqa/SensioLabs Bigtrak programming race... which would be more meaningful if I hadn’t spent some of the day before practicing. My honour demanded that I keep my time to myself, as did the judges who sadly recognised me perfectly well. So much for fame and fortune.
I didn’t actually attend the talks immediately after lunch, as I was feeling quite overwhelmed by the veritable torrent of knowledge I’d received that morning. Instead I sat down in the Hackspace and investigated (read: googled) some of the technologies I’d heard about, as well as having a chat with the chaps over at the LiveRebel booth. Worth checking out, incidentally - looks like quite a neat deployment management solution.
Talks - Saturday Afternoon
On, then, to the fourth talk: You Can’t Optimise What You Can’t Measure. Juozas "just call me Joe" Kaziukėnas handled this one with the message "logs are useless." Don’t even write them. I recognise the knee-jerk reaction we all have to that, but he made a good case - and I should clarify that we’re referring to production servers here. How often do we even read our logs? Instead he made a strong argument for good metrics-based data gathering, passed to suitable analysis tools. If we can be automatically warned whenever the metrics start to veer off their expected state, not only can we react to failures and bugs but even user experience issues we would otherwise have missed. Not so sure about "data doesn’t lie," though. Data might not lie, but we have to convert it to information to use it, and we can certainly bring a few of our own lies in (quite unintentionally) on the way. I found his argument persuasive, in any case.
For my final talk I attended Realtime Web Apps in the Wild with Phil Leggetter. This was primarily about event-driven web applications, as advancing technologies have finally allowed us to implement a "true" real-time web. The talk actually had a set of interactive apps woven into it, accessed by attendee browsers from smartphones to laptops - a fun addition to the usual style of a talk. A good discussion of available technologies (with a commendable lack of bias from the Pusher developer) and an informative if light coverage of the history of hacks, techniques and trickeries used to emulate realtime work in the past. It’s rather subjective, but I found the talk to have less impact than any of the others I attended, though. Perhaps this talk would have had a greater effect on someone who works more closely with near-real-time web apps - personally, I’m now aware of the technical differences but I struggle to really sense the difference between the old hacks and the new approaches favoured by the talk. Definitely worth a look if that’s your focus, though.
Last (but by no means least, as they say) we had the panel. Day 2’s panel had a much better feel than the first day’s, with some genuine enthusiasm and good humour displayed by a panel consisting of Aral Balkan, Ian Barber, Sara Golemon, Beth Tucker Long and Martijn Verburg. The topic was Open Source in Action, and to me the highlight was some discussion of previous open source projects by the panelists which had achieved things, or changed things, or ended up in strange and unexpected places. If you needed a reminder of why open source is worth our time and effort and our creative energies (and I discovered I did), it was worth hearing. It’s because you can write a piece of code for yourself, just because you need it, and throw it out on the web just because someone else might need the same - and in the end that code you’d have written anyway makes someone’s life easier, or ends up in places you never expected. A creative industry indeed.
Do I need to cover the post-conference social? I thought not.
So we come at last to the wrap-up. I had a great time at the first conference I’ve attended and hope others felt the same. I listened to and spoke to interesting, enthusiastic people, both speakers and attendees, and more than anything I feel like it brought home why I got into software development in the first place.
Because we can create amazing, interesting things that people need or like or enjoy or didn’t even realise they wanted or don’t need at all and share them with the world. Now, if you’ll excuse me, I have a few new projects I need to think about.