As many of you already know, I’ve spent most of the last week in Berlin, Germany, attending the International PHP Conference 2014. Here’s the short story: it was another great event (yes, I’ve attended this conference before). The conference seems to grow and mature. There were plenty of engaging speakers and insightful topics. If you haven’t been to one of these yet, and you are involved with web technologies in general or PHP in particular, you definitely should attend. It’s worth every dime.
Now, for the long story.
First, let me briefly touch upon organization. It’s been excellent. From event to event more and more quirks are ironed out, and if you were at any major event, you could imagine how many details there are to take care of.
The venus choice is perfect. Maritim proArte Hotel is in the heart of Berlin, right next to many historical landmarks. Spacious and modern, it provided the perfect infrastructure for the conference. Two things I want to mention in particular – catering and WiFi. The food, drinks, and snacks were amazing – a great variety and plenty of quantity. And WiFi is one of the major headaches at any event of even a smaller size. This time around, I was constantly connected, and the download speeds were lightning fast.
There was plenty of assistance for anyone who needed it – organizers’ staff were everywhere, speaking both German and English. The layout of the floors and session rooms was sensible, and there was plenty of information in printed materials, mobile applications (both for iOS and Android), and on the website.
If I was to name a single thing that could be improved – that would be temperature in small session halls. With a lot of people in the room it was getting hot pretty fast. But all survived, I guess.
Now, for the meat of it – the sessions. Here are the quick notes on those sessions that I’ve attended, with slides which I found (some are not available yet).
Opening Keynote: Digital Strategy, by Betsy Hoover. This was one of the least technical sessions of the whole conference. Betsy Hoover was speaking about the importance of defining your organization’s values and mission, using a lot of examples during her time in Barack Obama reelection campaign. For me, a more interesting perspective on Obama’s campaign was that of Kyle Rush.
Code Reviews: Leave Your Ego At The Door, by Frank Sons (slides). This session was more of an introduction into the mindset and cultural changes you’d have to go through when introducing code reviews to the team. It was a bit watery for my taste (and I’ve discussed it briefly with Frank Sons on Twitter – too bad we couldn’t sync enough to meet, because both him and I were rather busy). I’d welcome more specific examples from the real life – it was obvious that Frank has knowledge and experience with the subject. He recommended a book “Peer Reviews in Software: A Practical Guide” by Karl Weigers, and mentioned that he is using Atlassian Fisheye for a tool.
Planning for the Unplannable: Framework-Grade Architecture, by Robert Lemke (slides). Robert Lemke is the founder and lead developer for the TYPO3 Flow and TYPO3 Neos, so he knows a few things about building things that will go into unplanned directions. The main idea is that when you can’t predict how or how long the project will change, focus on building quality and flexibility. That should provide you with enough breathing space to handle changes. However, Robert warned that these come at a cost. One more technique to keep things in order is to fix problems when you see them. There was an analogy via some research somewhere, suggesting that a building with a single broken window will shortly have all its windows broken. So you should fix issues in your projects when you find them, or you’ll face these issues multiplied, copy-pasted, and mutated in a variety of ways, and, very very soon.
Build Smart: Scalable Infrastructure with AWS and Puppet, by Ben Waine. This was one of my favourite sessions of the whole event. Ben demonstrated how to migrate some real life scenarios to Amazon Web Services, using Puppet for configuration management. I’ve only recently started using Puppet and AWS, so this whole talk was spot on. Particularly useful was his coverage of the Amazon CloudFormation tool, and having his configuration examples on GitHub.
Code Coverage: Covered in Depth, by Sebastian Bergman (slides). Sebastian Bergman is a very familiar name to anyone using PHPUnit or many of the other quality assurance tools for PHP. His expertise is unquestionable, and I think that’s what drives most of the crowd to his sessions. Too bad, I find his talks a bit dragging. He is a slow speaker, and he talks mostly about very deep issues, not something that I, or many others in the audience, I guess, are facing frequently. Yet, it is still useful to hear Sebastian talk. Much like it is useful to hear anyone who knows the subject inside out talk. A left the session with better understanding of quality assurance, different types of testing, and a reignited wish to spend some time on the overview of my current tools and configurations.
The First Few Milliseconds of HTTPS, by Joshua Thijssen (slides). That was one other of my favourite sessions, with both an interesting subject and a very engaging speaker. With most people on the web using HTTPS on a daily basis, it is surprisingly difficult to find someone who knows well how it works. A recent set of discussions on The Heartbleed Bug is a good example of the global ignorance. Joshua on the other hand is knowledgeable and could explain things simply enough for even non-technical people to understand. I personally learned quite a bit. Most notably, the history of SSL/TLS versions, the TLS_NULL_WITH_NULL_NULL configuration that allows for the plain text communications via TLS, using WireShark for SSL inspection, and SNI (Server Name Indication) extension that allows one to have multiple HTTPS virtual hosts on the same IP address (minus support for MSIE6, BlackBerry, and Android 2.x).
Bottleneck Analysis, by Ilya Alshanetsky (slides). This was, to me, the best session ever. Ilya is one of the core PHP developers and has immense knowledge of how PHP and anything that surrounds it works. Speaking fast, he had quite a few slides filled with tools, techniques, and links to things that are helpful in figuring out if and why your web application is not performing to its full potential.
The Twelve-Factor App: Best Practices for PHP on Platform-as-a-Service, by David Zulke (slides). David works for Heroku that provides a PaaS for PHP, so, obviously, he was using his company’s tools and services as examples, but he suggested that many other PaaS solutions would provide similar toolkits and thus the approach is not Heroku-dependent. Even though I am not yet using any PaaS, this session was interesting. It demonstrated what I should keep an eye on, and how I should develop to make sure my applications are easily scalable and portable between different services. It also made me think more of the application development approach, rather than “a website with a framework”.
Why, what, and how: Testing in 2014, by Sebastian Bergman. One more session by Sebastian, which focused more on what’s changing in the world of quality of assurance this year. One of the interesting things was the discussion on the death of test-driven development (TDD) by some big names in software development. I thought it was dead a long time, but apparently the jury is still out.
The Flip Side of Dependency Injection, by Arne Blankerts. This session was useful, yet I could barely listen to it, as it constantly reminded me of different issues at work. Lots and lots of thinking, and then discussions with a colleague on to how to attack and improve a few longstanding problems. Very useful!
UX Design for the Internet of Things, by Claire Rowland. Another not too technical session, but very inspiring anyway. Claire spoke about designing the user experience for things in, hmm, real world, not online. It was interesting to see the connection between physical devices, mobile applications, and websites, and how people perceive changes and consistency between them. This session reminded me to think more about humans when building systems.
HHVM, The New PHP?, by Stefan Priebsch. This was an excellent overview session on what’s going on in the world of PHP, phpng, and HHVM. What is HHVM, Hack, and how it all ties together. Stefan’s good knowledge of Facebook as a company and a technology provider, not social network, made this session especially interesting. To me, there were a lot of interesting parallels with Google and their Google Web Toolkit story, but, unfortunately, Stefan didn’t know enough about it to comment.
Your Customer WANTS to Pay Your Testing Budget!, by Andre Jay Meissner. This session focused mostly on why testing is important, how software testing might be similar to testing in aviation, automobile, and medical industries, and how to convince the “suits” to pay for testing. Andre’s approach is to raise awareness and form an opinion, which he is trying to do with a viral video or something similar. I had a quick discussion with him after the session, suggesting an alternative approach via business-to-technical translators (project managers, for example), and focusing on project vs. function cost differences with and without testing.
Designing for Social Innovation and why the Web is our best and worst Enemy, by Sarah Drummod. Since I got involved with Open Source Software, I have a sweet spot for people with strong civil duty, those who are working hard trying to make the world better. Sarah seems to be just the person. She worked hard with many government agencies trying to make government more efficient and citizens more involved in what’s going on in municipal and federal offices. Most of her featured work was very impressive. The world needs more people like that.
Continuous Deployment with Ansible, by Holger Kohnen and Martin Voester. Ansible is an alternative to Puppet, which, as I mentioned, I’ve only recently started using. It was interesting to see similarities and differences, and real-life examples of how to do certain things. While I don’t think I’ll switch from Puppet any time soon, this session gave me a few ideas to investigate later (from “how to do X in Puppet?” series).
Turbo Boosting Your Websites, by Tobias Zander (slides). This session presented interesting techniques for improving website performances as seen by end user. A lot of time has been spent on BigPipe approach suggested by Facebook. This also made me rethink a few things we are doing at work, and how to implement this with Views/Elements+Ajax in CakePHP.
The Future of Search & SEO, by Marcus Tandler. Honestly, I didn’t expect much from this session, as I’m not a big fan of SEO. But Marcus did an amazing job, keeping everyone engaged with almost 400 slides in his presentation, and with focusing more on the side of search, and Google, as the main driver of the industry. I knew a lot of things that he said, I didn’t know a few more, and I liked how he tied all of it together. I think the SEO abbreviation was probably mentioned only twice. Which is a good thing.
Salt and Pepper: Native Code in the Browser Using Google Native Client, by Christian Speckner. This was by far the most technical session of the event, linking together browsers, operating systems, C++, and more. This has no practical use for me, but it’s good to know all available options. It was also interesting how many people were in the room, given that this is a PHP conference.
ODATA Web API, the SQL for the Web, by Rainer Stropek. I wanted to sit through this session, but got scared by all the .NET and Microsoft Azure examples and ran away. It’s good to know all available options, but this is a bit too much. :)
Well, that’s about it. I hope I haven’t forgot anything. But if I did, it’ll hopefully come up later. That happened before after such intensive trainings.
As I said, this is a great event to attend if you are involved with web development. Check when and where is the next one and make sure you are there. Also, make sure to bring a friend or colleague, because you will be dying to discuss things with someone who understand your context.