PHPNW17: A Review

The PHPNW 2017 Conference was run over the weekend of the 30th September to 1st October at the Manchester Conference Centre and I went along to participate. PHPNW has now been going for 10 years and it looks like this will be the last (more on that later) but this year was just as good as ever.

Image removed.

Doing the opening keynote this year was Rasmus Lerdorf (@rasmus) (the original creator of PHP). He took us through the history of his computing experience from his first computer in the 1980s to modern day PHP 7 and some of the new features that were in (or coming soon) to PHP. Interestingly, when PHP was starting out the big web scripting language at the time was perl, which was run using cgi-pm, but which was fraught with security problems. It took the perl community a good 8 months to create an apache module (mod_perl) at which point everyone had moved onto other systems like PHP. He stated that this slow adoption to use Apache (and one or two major security flaws in the module when it was released) was the final blow in the usage of perl and was the start of it's downfall. His look at PHP7 and future work in that area showed how much more performant PHP7 is than the older PHP5.x versions.

Rasmus worked out that there are 2 billion sites in the world, consisting of about 10 million machines, 50% of which are running PHP. As there is a 5% adoption rate from PHP5.x to PHP7.x this means that the world is using 750KWH less energy than it was previously, which equates to about 375 million tones of CO2. With 100% adoption of PHP7 this increases to 7.5 billion tonnes of CO2. This factoid got some chuckles, but it's an important message. With more performant languages using less system resources we can spend less energy running sites as an industry.

Finally, Rasmus showed us some things that are coming in PHP 7.2, which included some amazing things like dead code elimination (DCE) where code that is not used is removed from the compiled binaries. He also showed us Phan, which is the PHP static analysis tool that he has built that will allow people to catch dumb mistakes and helps to refactor the code to be PHP7.x friendly.

Straight after we had Rowan Merewood (@rowan_m) and Connecting to people - creating a cross-device user experience. This was a look at a few different ways in which users sign into services and the growing expectation of a unified approach to using them. The problems addressed were ultimately solved by using a Google Credential Management API to cross pollinate user credentials from one platform (a module app) to another (a website). Aside from the reliance on Google products from a Goole employee this was an interesting look at user credentials in the post password age and how to solve some of those problems. The main message was that the right place to connect to users is where they are right now.

After a quick coffee break I went to see Chris Riley (@giveupalready) and his talk Nuclear powered software security. After a short introduction into running a nuclear power plant Chris then went into using a system that allows you to analyse all the attack vectors of your application and attempt to solve them. This was a really interesting talk and I will be taking a few of the things I learned in this session into my workplace.

Lunch was the usual fantastic array of amazing food. Year on year the conference has some of the best food I have tasted at conferences, and it's down to the skills of the staff at the Manchester Conference Centre.

Stepping in for a speaker who wasn't able to make their session was Stefan Koopmanschap (@skoop) who did a session about Projects from hell. He went through some projects that he had worked on over the years and told how they went wrong in some way. This was a really interesting look into some projects and the main thing that stood out from all of these examples was a lack of good documentation. Sometimes it wasn't technical enough and caused problems in getting systems to work together, other times it wasn't agreed on before hand and as such scope creep could happen. Some other take home lessons were to ensure that there is some lead-in time for developers to get a hang of the project and to be prepared to work with people you don't get on with. Stefan did say that a successful project doesn't have to get delivered on time.

Next up was Debugging Your Set-Up with Derick Rethans (@derickr). This was a look at how to get a picture about what is going on within a (Linux) system so that problems can be solved. This was a look at strace, lsof, gdb, valgrind and ulimt. All of these tools showed system interaction in some way and it was great to expand my tool repertoire a little.

The last session of the day was Smart Scalable Content Distribution with Georgiana Gligor. In this session Georgina looked at how content could be distributed between platforms. This meant treating content more like code than as content and building the application with new content. I found this approach a little confusing, but I'll be looking into it a little more to see if it has wheels.

After some prize draws and numerous thanks it was time for the evening social where I chatted with lots of people until I needed to catch the train home. The PHPNW community is really friendly and welcoming and even after going for 10 years I still meet new people every year. The Lancashire Hotpots also played a gig during the night.

The first slot on Sunday morning (the hangover slot) was with Amo Chohan and his talk 12 Tried And Tested Top Tips For Better Testing. Despite the early start Amo was full of energy and gave a really good talk. There was lots of little tips and tricks about writing the best tests and using PHPStorm to auto create many of the tests. This was things as simple as having a dedicated test tool or using data providers. One concept of interest was the difference between Detriot testing (where real objects are tested) and London testing (where mocks are used).

Next up was another talk from Chris Riley, who talk about Microservices vs The Distributed Monolith. Here, Chris looked at the concept of what a microservice is (as compared to a monolith service) and what are good and bad approaches to creating services in this way. This is quite a nuanced subject and Chris made a good attempt at showing sone good approaches to building microservices as showed some good examples of where things have gone wrong in the past.

The penultimate session of the day was MySQL Worst Practises: Bring Your System To Its Knees with Andrew Moore (@mysqlboy) (who very nearly didn't turn up). Andrew works with Digital Ocean and showed a good depth of knowledge and experience in MySQL and how people can get things wrong in terms of setting things up, which causes problems down the line. This can be very simple things like not setting the correct sql_mode variable to more complex stuff like testing and checking a replication setup. He also showed that selecting the correct tool for the job was important and that MySQL isn't good at being a message queue and that tools specifically designed to do that job are much better. This is an important consideration in my day-to-day professional life and I always try to take a step back and analyse what we are trying to do and if the selected system is the correct tool for that job. It was good to see MySQL being treated as a tool and not some cool thing that can do everything.

Finally, the closing keynote was given by John Cleary (@TheRealBifter) and was called For The Love Of Code. I know John from the local user group and had even had him as a guest speaker at the Drupal user group I run so was pleased that he was doing the closing keynote. He talked about the book called the 7 habits of highly effective people, and picked the top 3 from this book. This was beginning with the end in mind, thinking about win-win, and to understand first and then to be understood. His message was essentially listening to people.

So finally I need to address something I mentioned earlier. Jeremy and Rick finished the event with lots of thanks and then said that PHPNW would be on hiatus for the time being. I have to say that I'm not completely surprised about this news. At the time of the conference I was busy trying to setup the NW Drupal User Group Unconference, and there is a massive amount to do and prepare for, even for a smaller event like that. PHPNW is a far bigger conference with a lot more to do, as well as money to raise. I had heard that it was difficult for the PHPNW team to find sponsors this year, and we had had the same problem with the unfoncerence. On top of that there are several people who put their lives on hold for a few months in the run up to the event so having a break to re-evaluate things is probably for the best, if only in respect to the mental health of the PHPNW organisers. That said, it is a massive shame that there will be no PHPNW next year and I really, really hope that it will come back in future years.

Once this news was announced John Cleary got up on stage and handed a picture to Jeremy and Rick that had 10 years of PHPNW conference logos and signatures from many of the organisers and speakers. After this was handed over Jeremy and Rick received a good minute or so of standing ovation. I've said this on other reviews of PHPNW before, but there is a lot of love in the room for PHPNW, Jeremy, Rick and the rest of the organisers. I would like to thank the whole PHPNW conference team for their efforts over the years, you have really made a positive impact on my personal and professional life.

Overall, a really fantastic event and I'm really proud to have been a part of 10 years of PHPNW conference. I learn lots every year and I really hope to see PHPNW come back in the future.

On a side note, if you have any stories of PHPNW conferences then Jeremy has setup a PHPNW Penflip to capture some of these stories from the community. This can be as small as something that you learned to help your job to getting a new job through the conference itself. A really good idea and lots of people have contributed already.

Add new comment

The content of this field is kept private and will not be shown publicly.
CAPTCHA
10 + 8 =
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.