Last weekend, I was lucky enough to attend my first conference as a delegate with Andrew Taylor at the PHPNW conference in Manchester, and had a fantastic time! I met some great new people, learned a great many new things, and even had time for a couple of beers and a curry while I was there… Hopefully one day I’ll be able to speak at a conference like this, but coming up with a topic is only the beginning… The guys and girls who were speaking were phenomenal, and all credit to them for standing up and pitching their ideas and experiences in front of everyone!
What I’ll do is gather together all the notes and topics I took away from each of the sessions I attended, and why I think each one will help me in my day-to-day development duties. Obviously, I didn’t attend all of the talks, and hand-picked the ones I was interested in, and the ones I thought would help the most; so I ended up going to a lot of Zend Framework and integration-based talks, solely for the purpose of furthering my own understanding! Anyway I’m rambling… On to the topics.
First up was Lorna Mitchell, who I’ve seen a talk from before at a SuperMondays-based PHP event. Her talk was entitled “Teach a Man to Fish”, with some tips on improving both your own learning and understanding as a developer, but also those of your team. I was looking forward to this, especially since we’ve had a recent addition in the office, and communicating across your experiences is not an easy task… Lorna explained some interesting ideas, such as defining the skills that each team member has, and plugging gaps that were evident. Making sure that the person who knows everything doesn’t “go under a bus” is also pretty important, so I recommend at least one minder for your top developer, rather than spreading the knowledge around, which is clearly far less sensible…
Next was a look at Zend Framework 2.0, and the new features the team have planned to integrate from Rob Allen, the author of this very nice Zend Framework tutorial and a ZF contributor. It’s nice to know that a lot of the problems in the current ZF 1.0 implementation (my goodness, where do I start?) are going to be addressed, and that PHP 5.3 is being used extensively, which will push the advancement of production servers where needed. I could go on and on about why I don’t use PHP 5.3 yet in production, but I’d rather save that for another time… Rob’s talk included a lot of neat new tricks for ZF, such as HUGE performance increase benchmarks, classmap files, and the use of interfaces over all of the ZF abstract classes. Apparently they’re looking towards an Easter release for ZF 2.0, but he didn’t seem particularly optimistic, and neither am I to be perfectly honest…
ZF was the theme of the next talk too, with Ryan Mauger introducing some of the features ZF is best at, and where you need to be careful when beginning with Zend for the first time. It’s only very recently, in the last year, that I’ve been using Zend Framework on-and-off myself, and Ryan’s presentation helped confirm my understanding of some of the aspects I’ve been learning, and I’m glad I now know I’m going in the right direction with things! He also showed off a neat tool, BeachPHP, for sandboxing PHP code LIVE in a browser! I might be a bit behind the times, but I’d never seen anything like this before and was very impressed! I’ll be using it a lot on the future…
Continuous Integration was the theme of the next talk, given by Sebastian Marek, and I have to say, this was just fantastic. I got so many ideas and so much information from this talk on how best to move from a live coding environment into a fully integrated system with automated builds, testing, coding standards checking and tons more. Admittedly, at PlusNet they have a HUGE codebase (gigabytes and gigabytes apparently) and need some phenomenal power to drive their TDD environment, but the improvements they’ve made since undergoing this approach are evident. I’ll be looking at tools such as PHPUnit, phpUnderControl, PHP_CodeSniffer, PHP Depend, PHP Mess Detector, Capistrano and Selenium all thanks to this talk!
Back to familiarity with another Zend-based talk, this time on Zend_Acl from Rowan Merewood. The ACL is something that’s always puzzled me, especially since the manual misses out some of it’s best features and it’s a bit hard to find any good tutorials for, so Rowan’s talk was very useful for talking through the implementations of a static and dynamic ACL in Zend, and the pitfalls and problems that can arise too. However, I’m still not entirely convinced the ACL is a library to be used by THAT many developers, and think that it has been a bit over-engineered to solve a specific set of problems rather than providing a wider solution.
For my final choice on Saturday I went to see Harrie Verveer introduce his thoughts on database version control, something even he said there wasn’t a “silver bullet” for in terms of a solution. Harrie described a number of approaches, such as patch files, especially with undo files too, creating an install.sql file that will deploy an instantly-working version of the database setup, possibly with some dummy test data too, and he went on to mention tools such as Phing and DB Deploy, both of which attempt to solve the version control nightmare surrounding MySQL. I’m not sure which idea I like best from Harrie’s talk, but when implementing these solutions I’ll be going for a hybrid approach I think, making sure all avenues are covered off with patch files, undo files and an overall installation file too.
The final session on Saturday was a framework shootout, a very interesting idea where four advocates of some of the major PHP frameworks, namely Kohana, Agavi, Apache Zeta Components and Zend Framework, would first answer some general questions and then any questions put to them. This helped me to get a very good understanding of the major differences between some of the mainstream frameworks, and why there are so many, since each framework has one or more core goals that it attempts to achieve, where others may fall down. I had actually only heard of Zend Framework before this presentation, so this gave me some information on the other frameworks, but still hasn’t convinced me to change! What I especially took from this session was the sheer passion that the developers have for their particular outlook on framework ideals.
The evening involved a free bar at the conference centre for a while, followed by a swift march into Manchester with Paul Geraghty and his wife Dominique, Clair, Andrew Taylor and Anthony Sterling to line our stomachs with delicious curry and a quick stop off at an Irish bar, before heading back to the hotel for a couple more drinks before a well deserved sleep.
Sunday started off with a group of us missing the obvious sign for the entrance to the conference at the MOSI, so after feeling like a set of pillocks, we entered inside and sat ourselves down for another round of slightly quicker talks for those of us who were still around.
Michael Peacock kicked things off with his talk on abstracting functionality using centralised content, which explained how to design a database for a project in such a way that you can have versioning applied to it easily, and have most, if not all of your different types of content extending from a centralised table. The content would also have designated searchable fields that could easily be integrated into an ORM to continue the theme. I found Michael’s talk to be very interesting, especially since this is the approach he deploys with client projects at Peacock Carter, although it clearly isn’t applicable to every single situation. Michael’s example was a simple standard database-driven website that incorporated products, a blog, comments, and ratings.
Another Zend talk, how surprising! This talk involved Kathryn Reeve doing some live demonstrations and basic explanations of the principles and features that Zend_Tool allows you to use, such as easily setting up projects, controllers, actions and modules within a new Zend project. I must admit, I didn’t find this talk too in-depth, as I’d already been familiar with Zend_Tool for some time, although I’m sure it was very useful for those in the audience who were just starting out with Zend and needed to get a grip on it’s basic features.
Exploring Nginx and the differences and advantages it has over Apache was something I was really looking forward to, as we’re rolling out Nginx on our new server deployment at LINGsCARS very soon, and there are quite a few aspects of it I’m still not familiar with at all. Errazudin Ishak has travelled over all the way from Malaysia to give his talk, so I made sure I paid particular attention. Nginx runs PHP in a completely different way than Apache, making use of the FastCGI implementation within PHP, and from v5.3.3 onwards, PHP-FPM. The speed increases were instantly noticeable, and Errazudin demonstrated a test on his local laptop that proved it all. The only problem I’ve found with Nginx are that it’s Rewrite rules are quite different to how Apache works, so that’ll take some getting used to.
The final talk we saw before setting off on the long journey back to Newcastle was from Thijs Feryn, a Belgian PHP Benelux advocate who works at a hosting company managing their PHP clients. Thijs explained some of the security he has to put in place, such as strict memory limits, disallowing override tags within .htaccess files, and the problems he has with both PEAR and PECL implementations. Although this talk wasn’t too relevant to me, Thijs is a very good speaker, and did explain some very interesting ideas, so I still felt that I took a lot from it.
Well, that’s about it! All I have left to do is thank all the wonderful team who did such a brilliant job organising PHPNW 2010, especially Jeremy Coates and the team at Magma Digital (enjoying a cup of coffee from my Magma Digital mug now!), I’m very sorry we had to leave a talk early, but I look forward to seeing you all again next year at PHPNW 2011! BY then I hope to have taken a lot of the ideas on board and be able to demonstrate how they’ve helped us at LINGsCARS!