PHPNW13: A Review

PHPNW13 is the 6th annual PHPNW conference, organised by members of the PHPNW community and Magma Digital. This year the conference saw around 420 people (with myself as a helper) at the conference, which was held in the Manchester Conference Centre.

My involvement in PHPNW13 started a few months before the actual conference. When the call for papers closed back in June I spent a weekend reading the submissions so that we could pick which sessions would be at the conference. Out of the 183 papers submitted (20 more than last year) we had to pick just 35 or so sessions that would be presented at the weekend. The final selection of talks was really good and judging by the comments and rating on they were well received by the other conference attended as well.

The weekend consisted of one day of tutorial sessions and a two day conference.

Friday Tutorial Day

Image removed.

This year I was sponsored by my company (Access) to attend the training day so I wasn't part of the helping staff for the first day. So with laptop in hand I turned up to Automate All The Things with Marcus Deglos as the morning tutorial. This was an introduction to the virtual machine management system Vagrant and the Puppet provisioning platform. I had played with Vagrant in the past but hadn't really got just how useful it could be, Marcus talked us through getting started with Vagrant and how to configure the virtual machines in different ways. After we had all set up our virtual machines we then started looking at Puppet to install and configure software onto them. Both Vagrant and Puppet use the Ruby programming language to set the configuration of the servers up so it was also a morning of looking into simple Ruby syntax. By the end of the morning I was happily setting up Vagrant files and adding Puppet configurations.

After a spot of lunch I then sat in the What Symfony Components Can Do For You session with Andreas Hucks. In this session we took an existing legacy application (written in terrible PHP code) and used Symfony components to replace more and more parts of the application, eventually replacing the whole thing. This was interesting to me as I have been looking at the new version of Drupal (version 8) which has been built using Symfony components and I could see little bits of Drupal 8 source code being introduced into the system as the legacy application was replaced. I quite liked the way in which Andreas introduced things during this session as he encouraged us to add more and think for ourselves. I found that I could work on the code for a bit until I found that something wouldn't work because a component was clearly missing. Andreas would then introduce this component and the code I was stuck on suddenly made sense.

After finishing the sessions for the day I went to the hackathon where everyone worked on a variety of projects. I had a little bit of work to do on some of my community projects so I sat down on the 'misc' table and worked on them and chatted for a couple of hours. After which I looked at some of the things I had worked on during the day, which I appreciated as it helped some of it sink in a little.


My helper responsibility started on Saturday morning when I helped to hand out conference t-shirts to the people arriving at the conference. We had a few hundred people to get through in about 40 minutes, which is quite a lot really, but things seemed to go quite smoothly and we soon had everyone sat ready for the conference to begin.

Image removed.

The keynote this year was called 0x0F Ways To Be A Better Developer and was presented by Lorna Mitchell and Ivo Jansch. It was also a bit of a technical experiment. Due to the fact that we were unable to fit everyone into the main theatre it was decided to stream a video feed over to another room and have an overflow of people there. Rather than leave the people in that room on their own Lorna presented in the main theatre and Ivo presented in the other room, with each video fed through to the other room. Thankfully, everything went well and the two presenters were able to deliver a great talk to two rooms of people. The talk consisted of a great set of pointers on how to, well, be a better developer. This included ways to keep up to date with education, asking the right questions and taking care of our own health. What was also interesting was that they talked about the Dunning-Kuger effect, which essentially states that people who know lots under-represent their abilities and people who know little over-represent their abilities. Since I learnt about this effect a few years ago I have been noticing it in people I work with, especially in those people I go to for knowledge and guidance.

After the keynote I went along to The Future Of The PHP Development Environment with Jeremy Quinton. This talk started off describing a common problem that Jeremy once had and that every PHP developer has faced at one point. PHP development used to be a process of setting up local LAMP stacks or using tool suites like XAMP or MAMP to set up an AMP stack of some sort. On top of this, many websites might include PHP at some point in the stack, but have all sorts of different technologies in order to serve an application, and these technologies change for every project. The solution to this is to use Vagrant and either Puppet or Chef to setup and provision a server for the development environment needed. The provisioning technologies used here can be applied to both the Vagrant tool and to the live environment, making the change between development and production as simple as it can be. As I spent the day before looking into Vagrant and Puppet I was (at least partially) familiar with some of the content of the talk, but it was interesting to see how Chef worked and to also hear about some of the back history of Vagrant

Image removed.

The next talk I attended was Vagrant And Ansible, which was presented by Michael Heap, who had given a different talk at the PHPNW user group just a few weeks before. Vagrant is relatively easy to get to grips with, and I agree with Michael that Puppet and Chef seem impossible when you first look into them. I had seen Ansible being mentioned a few times in various blog posts but never really saw how to get started with it. Michael talked about how to get started with the tool and then launched into a full demo of creating a Vagrant instance and provisioning it with Ansible. What was great about this demo was that it all worked perfectly well and the machine set up had exactly the correct software installed. After this talk I was definitely sold on the idea of Ansible and actually like it more than the hours of playing around with Puppet that I had done the day before.

Lunch was provided by the conference centre (which was pretty good) and this was followed by Your Coding Standards Matter by Volker Dusch. I was on hand as a speaker shadow again here so I helped Volker get set up and held up the timing signs for him. The talk he gave surrounded the PHPMD and PHP Codesniffer tools and their role in looking at coding standards. Volker also broke down the various PSR standards into the core details and told us why they were important. He also went on to say that just because a rule is in the standard it doesn't mean you have to follow it. For example, the 120 character limit was far too low for Volker, he said that some of his class names were longer than 120 characters and so he tends to ignore this rule. In order to create a custom PHPCodesniffer rulebook you need to create an XML document, which can be complex. Volker has created a tool that allows you to put together these XML rules and to understand what each of the rules actually does. This talk was also one of the two funniest talks of the entire conference (I'll come to the other one later) and has the entire room laughing every couple of minutes.

Straight after this was Seb Marek, talking about Managing And Monitoring Application Performance. Seb talked about why performance is important and then looked at a few tools that profiled applications in different ways, showing examples of the output of each. These tools were Xdebug, Xhprof and New Relic. This was an interesting view on a few tools that I had seen (and used) myself and gave me some insight into how other people use these tools to monitor their applications.

The last session of the day (before the closing notes) was How Silex And Cilex Became The Glue For A Media Transcoding Application with Stefan Koopmanschap. This was a case study which looked at a simple transcoding management application which Stefan wrote for a major TV firm in the Netherlands. The application didn't actually transcode anything, but it was responsible for making sure that the correct transcoding was done for every TV show that was put online. Cilex is a command line framework built using Symfony components and the application was put together using this framework. Stefan then told us how, as the requirements kept changing, so did the application he was maintaining. When the application called for the use of a web front end Stefan used Silex (a PHP micro framework built with Symfony components) to set this up. After a few iterations of changes he had created a full reporting interface for all of the transcoding that was going on. There was also a small amount of client facing PHP that had to select the correctly transcoded video for the right player from a collection of servers. This code was written in plain PHP as it needed to be really simple and fast. The message that Stefan left us with was that it is important to select the right tool for the right job. Start out simply, but make sure that you think about what the final outcome might turn into when starting work on a project. Change is going to happen and you need to make sure you think ahead about any change that might happen to that you can prepare for it.

The final session was a chance for UKFast (the platinum sponsor) to speak about some things they had been working on and to give out 10 Rasberry Pi's. After this there was a collection of prize giving (in which I won a book on Nginx) before the bar opened. The usual free bar and dinner was put on for everyone involved and I had a really great time drinking, eating and talking with new people and some people I hand't seen in a while. I have been told that there was quite a bit of money behind the till at the free bar this year and that it was all gone by 11:30.


Image removed.

The first session on the Sunday was with Volker Dusch again, who was talking about Vertical Reusability Through Components. This was a case study looking at ResearchGate and how it has been put together. This was a really interesting look at how you can get distinct parts of functionality working together in a web page by loading them in using JavaScript. They used a system from Facebook called BigPipe and adapted this into a system called Nozzle, which allowed this asynchronous loading to be done in a much cleaner manner. Volker also showed a good use case of the new yield syntax in PHP5.5 which allowed him to vastly simplify the code he had whilst still maintaining the same functionality.

After this I went to the Cyber Security session with Clinton Ingrams. This session consisted of Clinton talking about what sort of threats existed, a few examples of why we should be interested in this and what sort of government funding was available for this. It is possible to get funding from the government for security research and to ensure that our clients websites are security checked. This might consist of penetration testing or a full security audit.

The penultimate session of the day was with Lorna Mitchell, who was talking about Debugging HTTP. Rather than looking at PHP code this session concentrated on looking at how to diagnose problems with any HTTP requests made to the server. This includes normal HTML output, AJAX requests, JSON API calls and even mobile communications. Lorna used a variety of tools in order to demonstrate debugging HTTP requests including browser inspection tools, wireshark, curl and Charles proxy. I hadn't heard of Charles proxy before, but after 10 minutes or so I was completely sold on it. What was really useful was the way in which it would be configured to redirect API calls from a mobile phone to a test API platform without having to alter the code the mobile was running.

Last (but not least) Rowan Merewood took the main stage to give the closing keynote talk, Building Better Developers. In this talk Rowan took a mannequin and added different clothes and body parts to build a picture of the perfect developer. Obviously the perfect developer doesn't exist but Rowan stressed that we should strive to improve ourselves and be excellent to each other. Not only did the talk have some serious 'take home' values and suggestions, but it was also in contention for the funniest talk of the conference (aside Volker's coding standards talk). Rowan is a great speaker who introduces just the right amount of humour to get the message across. His enthusiasm for the subject is infectious so you just can't help nodding along with everything he is saying. I reference his talks from PHPNW conferences years ago.


Image removed.

PHPNW is normally a brilliant conference, and this year it was no exception. All of the talks were amazing and the speakers just as good as ever. I can always tell when I see a good talk as I then want to go away and experiment, and I have been busy this week looking at all sorts of things that I heard about over the weekend. It was also good to catch up with some people I haven't met in a while and to meet a few new people. Huge thanks to everyone involved in making PHPNW great, including the helpers, speakers, sponsors and everyone who bought a ticket. I'm already looking forward to PHPNW14 :)

A special note of thanks to @phpcodemonkey and @akrabat for taking some of the amazing images I have used on this post.

I have read a few blog posts about the conference already and seen the positive feedback, but if you went to PHPNW13 then please let me know what you thought in the comments section below. Also, don't forget to put your comments on so that the speakers can see their feedback.

Add new comment

The content of this field is kept private and will not be shown publicly.
14 + 3 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.