Dutch PHP Conference

Often when I attend PHP conferences, I blog as I go along, upload a few photos and generally share with others who aren’t in attendance. At DPC this year I completely failed to do any of the above – no excuses, I was just having too much fun :)

I travelled over on Wednesday and met up with a bunch of colleagues/friends at the airport, so we could make our way to the hotel together. We arrived to find colleagues and speakers already in the bar and it was great to see so many old friends and meet new ones. Thursday was tutorial day, this is a separate day with in-depth sessions that run all day. I attended the Zend Framework tutorial delivered by Matthew Weier O’Phinney from Zend, which was really good. There was a similar session last year but that was quite basic – since then I’ve worked a bit with Zend Framework so this session suited me really well and showed me some stuff that I’ve been struggling with. We rounded off the day with an Ibuildings social, giving me chance to catch up with my colleagues and enjoy the free bar (thanks Ibuildings, great opportunity to see everyone!).

On Friday the sessions got off to a flying start with the keynote from Andrei Zmievski, Open Source Fellow at Digg. One thing that I always find simultaneously wonderful and intimidating is how the speakers at these events mingle with everyone regardless of how qualified they are. This creates a great atmosphere at the events, and makes the speakers very available. You couldn’t pay for the experience of running into someone in the bar whose talk you saw and having them happy to answer a couple of your questions about it. I have no idea if this happens in other industries but it surprises me every time.

Probably the biggest “problem” at this conference was the excellent schedule. Its a good problem to have but it does mean that I had issues with every session deciding what I wanted to see – more so than any conference I’ve been to yet (are you listening, conference organisers?). I only sat out for one of the time slots and that was mostly because I was very tired and the talk I wanted to see was packed :) Friday ended with a happy hour social at the bar next to the venue, which was great – it seemed like all the speakers and most of the attendees were there, and everyone was moving around and talking to everyone else, which was a lot of fun.

Saturday was more great sessions and held a couple of highlights for me – two friends of mine, Ian Barber and Juliette Reinders Folmer, gave their first conference talks at DPC this year, in consecutive sessions. I was able to attend both sessions and they were both excellent (and handily they both spoke on subjects I was interested in!) – and I even managed to put my head around the door of the Oracle Installfest which was also happening through Saturday morning. Saturday afternoon saw the last of the sessions and a closing keynote entitled “The Cal and Ivo Show (with friends)”, in which Cal and Ivo talked over a couple of points between themselves and then invited some of their “friends” onto the stage to be asked a few questions. It turns out I fall into the “friends” category so despite the fact that I wasn’t there as a speaker, I still managed to find myself on stage with a microphone!

I’m a big fan of conferences, I like to get to a few each year. Sometimes I’m an attendee, sometimes a speaker, and sometimes an organiser – if you’ve seen me talk about communities, professional development, or speaking then you’ve probably heard my thoughts on these events and how much can be gained whatever the reason that you attend. DPC is a pretty special event – Amsterdam is well connected and we had attendees from all over Europe, some from the US, and even a few from further afield! The sessions, as I say, were the best I’ve seen and I wish we could do it all again so I could try to get to the bits that I missed. Its a great crowd at the Dutch PHP Conference, always someone to talk to and I actually know quite a few people who attend – and I don’t often manage to see some of those as they live elsewhere in Europe.

I hope everyone who attended had as much fun as I did – see you all next year!

DPC09: Looking forward to the Dutch PHP Conference

This time next week I’ll be full of new ideas and enthusiasm as the Dutch PHP Conference 2009 will have ended. Last year was the first time I attended the event and I have memories of a great crowd and some fabulous sessions, also my first experience speaking at a conference (yes really, a year ago!). This year it looks like the event will be better than ever with an extra day and a schedule absolutely rammed with fabulous content. And best of all, I work for Ibuildings, so I get to attend (I’m not speaking this time around).

Conferences are a great opportunity to meet some like-minded people, find a peer group to drink socialise with, and of course get to hear all the sessions that are around and chat to the speakers. Amsterdam is a great place to do this, its well connected and there are speakers and attendees from right across Europe and beyond. Since I know the PHP community quite well, I’m looking forward to getting to spend time with this cool crowd – and of course all my developer colleagues will be there as well so a party spirit is guaranteed :)

There’s a few other things going on around the main conference – with social events and add-ons like the Oracle Installfest. I hear there are still tickets remaining so if you’re feeling a bit left out – come and join us! If you’re there, do stop and say hi to me – I know more people this year than I did last but its always nice to meet new faces too. Next stop, Amsterdam!

PHPNW09 – PHP Conference in Manchester

Last night at the PHPNW user group we announced this year’s conference – PHPNW09. We don’t have a lot of detail but here is a run-down of all the information I have:

  • Date: Saturday 10th October 2009
  • Location: Manchester Conference Centre. It’s a new venue but just as central and actually easier to get to.
  • Website: http://conference.phpnw.org.uk which currently points at last year’s conference but feel free to click around to get a feel and we’ll update that soon.
  • Focus: PHP in the team – we’re having a real focus on PHP teams, tools and practices for them.
  • Price: We’re aiming for the Early Bird tickets at 50 GBP + VAT, similar to last year (OK so last year was inc VAT but hey, it’s still excellent value). This price will run until 10th September, a month before the conference, at which point they’ll become more expensive.
  • Speakers: Yes please! Like last year, we’ll be running a call for papers and we’ll be looking for some well-known speakers and some we haven’t heard of yet. Like last year the speaker’s package will include the speaker’s dinner, a conference pass and hotel accommodation, but won’t include travel expenses – if you are interested then look out for a CfP in August
  • Schedule: See previous point ;)

Did I miss anything? If so, drop me a comment.

The timescales (all subject to change for no apparent reason and without warning) are something along the lines of getting the site live in June, the tickets on sale in July, the CfP out in August, closing towards the end of that month, publishing the schedule at the start of September to give people chance to get tickets still on the early bird rates which expire on 10th September – then another month for people who like their tickets more expensive and finally the event itself on 10th October.

A few other things I would like to mention:

  1. We want sponsors, including some quite small ones! If that’s you, please contact us or just leave a comment with your details
  2. We will need some volunteers on the day, all of whom get free entry – again, let us know if you are up for that
  3. We’re considering running a “day 0”, probably a hands-on day on the Friday, currently we don’t have either venues or clear plans for this so if you have any thoughts or ideas, add a comment!

php|tek 2009: Quick Round-Up

Last week I was at the php|tek 2009 conference in Chicago. This was a really exciting trip for me – only my second conference as a speaker and the first time I’d attended any of the MTA conferences. I was absolutely delighted to have three of my sessions accepted into the schedule – although it seemed like a lot of preparation, I actually headed out to the conference feeling relatively prepared.

Tutorial Day

I spent the morning finalising slides with my co-presenter Matthew Weier O’Phinney … well, we looked at the slides before we wandered off to Starbucks anyway :) The trouble with preparing talks with someone that is both on the other side of the world and has a wildly important job (and gets promoted in the middle) is that its sort of hard to get together and organise these things. Actually the material was in surprisingly good shape on the day and our session was well-received – the slides are available.

Matthew and I delivering our tutorial

Immediately after our session, Matthew and I were interviewed by Keithy Casey and the video is available if you’re interested.

Thursday

After a relaxing Wednesday where all I did was show up to sessions and get my picture taken with the phpwomen, Thursday was a pretty crazy day. I had two talks scheduled, and both were in rooms that turned out to be unbearably hot. First I gave a talk on a topic I’m actually really excited about – Linux-Fu for PHP Developers – which was an overview of the commands I type when I’m working with linux. You can see the slides but I’m considering splitting this talk into two sections if I want to give it again – one introductory and one all about the tools I used. It’s the tools that are most exciting and I think that came across when I was giving the talk.

A couple of hours later I gave a talk entitled “Using and Understanding the Community” with my Ibuildings colleague Stefan Koopmanschap. I was surprised how many people attended the talk – there was a great atmosphere in the room and best of all were the people who came up to me later to say we’d inspired them to get more involved. I was even more surprised to have Cal Evans inform me later in the day that we had a slot scheduled in the uncon for the following day to give the talk again for those who missed it! There are no slides for this talk, since we only had one slide with a few URLs on it, however the second edition of the talk was recorded so the audio I guess will get published at some point – I’ll post here when this happens.

Things got a bit more light-hearted at this point as we had a slot in the unconference for a PHPWomen Craft Hour. All sorts of people turned up and knitted, crocheted, made lace, dismantled novelty cars, made pipe cleaner animals, and all sorts of other things. We had a great laugh and it was cool to meet some new faces. Hope we do this again sometime!

phpwomen crafty uncon

Finally for this day I gave a more serious uncon slot (with the craft still going on at the back of the room!) entitled “Architecting Web Services” – this is a talk I’ll be giving in Leeds this week at the FOWA Tour so it was great to try out the session with such a qualified audience at php|tek. Many thanks to those to attended and gave their input, I’ve re-worked the slides and will post them after giving the talk tomorrow.

Conclusion

All in all it was a great week – meeting new friends and catching up with old ones, and getting some great technical content in terms of both talks and hallway discussions too. Thanks to everyone who helped me have such a great time there – hope to see you all in the future :)

Linux-Fu For PHP Developers

The slides from my talk at php|tek are now online – Linux-Fu for PHP Developers. Thanks to everyone who attended and left feed back for me on joind.in. Feel free to leave a comment if you were there or if you have any questions about the slides!*

* Unless the question is “why didn’t you include X?” in which case the answer is that an hour-long slot was nothing like enough :)

php|tek 2009: Tutorial Day

I’m currently attending the php|tek conference in Chicago. Today is tutorial day, and I delivered a half-day session with Matthew Weier O’Phinney of Zend. Our session was entitled “Practical SVN for PHP Developers” and the slides are online. The session seems to have gone over pretty well – this is my first time delivering a tutorial and overall it was a good experience.

Later in the week I’ll deliver two more talks – Linux-Fu for PHP Developers and A Guide to Using and Understanding the Community – plus another in the unconference entitled Architecting Web Services in the unconference. So far I’m meeting old friends and new ones, and having a blast :)

PHPNW TestFest

Yesterday saw the PHP North West User Group hold their first Test Fest in Manchester. As a relatively young user group (at less than a year old) with not a single @php.net email address between us, this was an ambitious venture. Scott MacVicar very kindly offered to come and be our mentor – to show us around PHP and get us started writing tests, and in fact he did very well and everyone was able to begin quite quickly.

ScottMac's To-Do List

With 14 attendees to support, Scott had his hands full but between all of us we managed 84 tests which was very impressive!! Most people seemed to pick it up really easily and I’m almost certain that there will be a few more tests coming in from various people who were there on the day – which is great because the increased test coverage really does make a big difference to PHP itself.

PHPNW TestFest Crowd

I’d like to say a huge thanks to everyone who turned up and wrote tests, to Scott for coming and dragging us all through the process with such good humour, to Salford University for lending us the space for the event and to Ibuildings for sponsoring the event and making it all possible! There are a few more photos as well – a huge well done to everyone who took part, here and at the other test fest events!

Looking Forward to php|tek

This year I’m excited to be heading to the php|tek conference in Chicago (May 19th to 22nd), and even more excited to be going there as a speaker. Over the course of the conference I will present or co-present three sessions; one tutorial and two talks.

The tutorial session is a half-day on Tuesday afternoon – I’m co-presenting with Matthew Weier O’Phinney of Zend and our session is “Practical SVN for PHP Developers”. We’ll be walking through the concepts of source control, adminstering subversion, repository structure strategies and also showing some hands-on use of subversion. We’ll talk about the issues around introducing subversion into a team and looking at how this tool fits in as part of the development process. If you’re a subversion user looking to learn to get more fromthe tool, an architect looking to include it in new or existing setups, or a development team leader or manager looking for information about setting up and managing subversion, then come along!

The next talk I’ll give is on Wednesday when I’ll be presenting “Linux-Fu for PHP Developers”. If you’re already a linux wizard then feel free to drop by and heckle – but if you’re either a beginner or a competent user looking to raise your game then this session is for you. Its a tour of the commands I use day-to-day; an opportunity to metaphorically look over my shoulder and take a peek at the tools I use and how I use them. There are code samples and although there is a lot to take in, I hope it will make command-line linux usevery approachable for everyone – if I can do it, anyone can :)

Finally I get to co-present with my friend and Ibuildings colleague Stefan Koopmanschap a session entitled “A Guide to Using and Understanding the Community”. This session is an overview of what happens in the community outside of people’s nine-to-five jobs, how to access the community and what you might find there if you do. A lot of the value of open source software is in the community but knowing what information and interactions you can find there and how to find them is a mystery to many. For business in particular, free software with no guarantees can be slightly daunting! Stefan and I have lots of community involvement and will give a tour of what’s happening, how you or your employees can gain fromthe community, and how you can give back.

I’m really looking forward to the conference, to meeting old friends, virtual friends, and friends I haven’t made yet – if you will be there let me know and make sure to come and say “hi”!

Testing PHP

I’m organising the PHP Test Fest that is happening in Manchester next weekend, and in preparation I decided it was high time to sit down and figure out what testing PHP is all about. People kept telling me it was easy but I had no clear picture of how all the pieces went together – there are different ways of doing the same thing and although I have been keen to get involved with testing for some time, I haven’t been able to get started until now.

I’m a linux user, so this whole post relates to how this works for me, on my ubuntu system.

First of all I grabbed a copy of PHP from http://snaps.php.net. The TestFest focuses on writing tests for PHP 5.3 so I took the most recent copy of that version.

I unzipped the code, changed into that directory and compiled the code and ran all the tests:

./configure  --enable-gcov
make
make test

At this point I was prompted to send the report of the tests off to the PHP QA team – I always make sure to do this when I compile PHP, it helps them a lot to collect the data and it is no bother for me. I will say that due to the huge increase in the number of tests in PHP 5.3, it takes a bit longer than it used to, but I don’t mind.

One thing which I keep seeing when I see people talk about tests is the lcov test coverage graphs, the ones that look something like this:

“Just pick something to test from there”, people said. I just didn’t understand at all how to pick which bit of PHP I would need to write test code for. It turns out that if you click on an extension, you get a list of files, and these too have coverage numbers.

Then if you click on an individual file, you see the C code of PHP itself there, with highlights to show which lines are executed in tests and which are not. So now you can start to get an idea of what needs testing (although you have to read C to do it which is fine since I’ve studied it, and PHP is pretty similar, but it does get confusing in places).

It is pretty easy to run a subset of tests, despite some quite long-winded documentation on the subject. There is a script inside the PHP directory called run-tests.php which takes an argument of either a single test or a directory of tests you’d like to run. Just call this with CLI PHP and specify which tests you want – I specify the path to the PHP since I want to use PHP 5.3 and not the existing PHP which I already use on my system

export TEST_PHP_EXECUTABLE=/sapi/cli/php
$TEST_PHP_EXECUTABLE /run-tests.php tests/ext/spl/

The “make test” command also takes a TESTS= argument, and this is also an option. Its just a wrapper for run-tests though so either works fine. I built my php inside the directory with the source in it, just for convenience, but you don’t have to – and if you don’t then you need to adjust the paths above accordingly.

Then its time to read the phpt documentation and start writing tests. There are groups all over the world taking part in the testfest, so check the list and find your nearest. For me that’s Manchester, 9th May 2009 – and I’m looking forward to it!

How To Use Salts and md5 in PHP

The MD5 hashing algorithm gets bad press because “its insecure”. This post is not about that; MD5 is a hashing algorithm and is a good way of generating a representation of something, without actually needing the thing itself. I was asked about its use the other day so I thought I’d blog it.

One problem with MD5 is that a given input always generates the same output. Therefore, it is possible to generate a table of all (likely) values and their resulting MD5s, then be able to use it as a lookup to find out what makes that result – these are “rainbow tables”. A bit like choosing a password, having a commonly available piece of data (like an integer) means that there is probably a rainbow table with it in. Salting makes it less likely that a decode is available, and in PHP you would do something like this:

$salt = 'myrandomstring';
$hashed_value = md5($salt.$value);