Blog


  1. PHP Version Adoption


    PHP runs over 75% of all websites whose technologies are known (source: w3techs), which makes for a really REALLY long tail of users who once installed wordpress, phpmyadmin, or some other open source project that helped their business needs at the time. What they don't do is upgrade. PHP's current …

    Read more

  2. Simplest PHP Generator Example


    I really like the generators feature that's arriving in PHP 5.5, and since we're now into release candidate releases, it's actually not that far away. I've been speaking on this topic and I thought I'd share my trivially simple code example from my slides.

    Read more

  3. Setting Multiple Headers in a PHP Stream Context


    Last week I tried to create a PHP stream context which set multiple headers; an Authorization header and a Content-Type header. All the examples I could find showed headers built up as a string with newlines added manually, which seemed pretty clunky and not-streams-like to me.

    In fact, you've been …

    Read more

  4. What Goes in Source Control?


    Short answer: everything! However we need some good directory structures and source control configuration to make that a really practical answer, so this article is a quick outline of my usual advice for a good source control structure for a standard web project. The examples are for a PHP project but I'm sure you could apply this to your own language of choice, also.

    Read more

  5. The Mathematics of Recruitment and Training


    The PHP jobs market is hot, very many people find it hard to recruit the skilled staff that they need to achieve the goals of their organisation. I meet a wide variety of organisations in this technology space, and they all tell me the same story: it's really difficult to get good, qualified people. And I believe that this is true, I know plenty of developers too and although I'll usually try to put people in touch where it makes sense to do so, it's not as if there is a great reservoir of hidden PHP talent somewhere.

    This isn't a rant about salaries, the skills of new graduates, or the trials of dealing with recruiters, although each of those is worth a post in itself. It's about the mathematics of providing your organisation with the talent it needs at the time that it needs it.

    Read more

  6. Pretty-Printing JSON with Python's JSON Tool


    Today's quick tip is something that was widely retweeted after my "Debugging HTTP" talk at the ever-fabulous WhiskyWeb conference last weekend. When working with JSON on the commandline, here's a quick tip for showing the JSON in a nicer format:

    curl http://api.joind.in | python -mjson.tool
    

    You need …

    Read more

  7. Video Course on Learnable: OOP PHP


    I'm delighted to announce that my new video course on Object-Oriented PHP is now available on Learnable! It's very much an introduction, aiming to cover WHY objects are so cool as well as how to declare and use one. The course is a mix of video (filmed in my kitchen …

    Read more

  8. Ideas Of March: Don't Read The Comments


    It's that time of year again, time for an "Ideas of March" post (you can read more about this initiative on Chris Shiflett's blog). Most years many bloggers pledge to write more often, start or restart their blogs, and generally embrace the idea that some thoughts are worth more than 140 characters. Chris himself wrote this year about the demise of google reader, and about blogging as a way of curating and retaining ownership of your ideas, which I thought was an excellent point to make.

    Read more

  9. First Phing Plugin


    I'm a huge fan of Phing and use it regularly for build and deployment tasks. Often, I'll ask about a plugin that I wish existed, and get a very courteous "patches welcome" from the nice people in the #phing channel on freenode. This has happened a few times, so I thought I should probably look at how to make a new phing plugin, this article shows you how to make the simplest thing I could think of: a simple "hello world" plugin.

    Read more

  10. Installing XHGui


    There's a new version of XHGui (well, a few months old) and it's fabulous! It's got a few new dependencies though so I thought I'd write down how I set up my version, in case it's helpful to anyone else (and so I feel like a pro next time I have to do this!). If you're not familiar with XHGui it's a fabulously easy and friendly way to profile your application; to understand which method calls in a page take the time and how many times they are made, so you can improve the performance of your application. All these instructions are for my 32-bit Ubuntu 12.10 system, hopefully they will work for you or you'll be able to adapt them as appropriate.

    Read more

  11. PHP and Gearman: Unable to connect after upgrade


    I upgraded PHP and related pecl modules on my development machine today, and ran into a problem with Gearman. Actually I ran into more than one! Firstly the challenge of getting the newest pecl version working with a gearman version. Then an error where my existing PHP application couldn't connect to gearman after upgrade.

    Read more

  12. Talking about ZCE at PHPNW March


    If you're interested in becoming a Zend Certified Engineer and are local enough to make it to the next PHP North West User Group meeting on Tuesday, 5th March in Manchester (UK), then come along! I'll be giving a talk and welcoming questions and discussion around becoming ZCE, why you …

    Read more

25 of 92