PHPUnconference Comes to Manchester

I’m very excited to hear that the PHPUnConference Europe (@phpuceu on twitter) is coming to Manchester on February 19th and 20th! So excited, in fact, that I’ve rushed out and bought my ticket (for a whole £40, that’s a good investment in my opinion). The event brings together the PHP community from across Europe to an unconference where the speakers are the presenters, and really anything goes!

A great feature is the contributions and interests section – if there’s some content that would be particularly useful to you, or a talk you think would be a good fit, then you add it on this page. All the attendees can vote for which sessions we want to see and so we crowd-source the best lineup possible :)

If you fancy some more structured PHP training then hang around in Manchester after the event because thePHPcc are bringing their PHP Days training to Manchester on the Monday and Tuesday following the weekend event, which is pretty exciting :)

Hope to see you in Manchester, all I need to do now is work out which topics I want to see/give talks about …

3 Ways to Access a Namespaced PHP Class

After what felt like years of debate over the notation to use for PHP’s namespaces, it seems like the feature itself has had relatively little use or attention since it was actually implemented in PHP 5.3. We’re all used to working without it but using it does make code neater.

Take this example (in a file called namespaced-class.php)

namespace Christmas\DaysOf;  

class PartridgeInAPearTree{ 
}

Now we have a few ways to access that class.

Continue reading

Keynoting at PHPBenelux

Have you got your tickets for PHPBenelux yet? If not then I hope you will do so because I would love to see you there!

I’ll be delivering a keynote at the PHPBenelux Conference in Antwerp in January alongside my good friend Ivo Jansch. Between us we’ve got plenty of stories to tell from our experiences in various areas of development and we’d like to share those with you! I hope you’ll come along and join us, and if you are quick you can catch the early bird prices, saving 50 euro.

On a personal note I have many great friends in this part of the world and I’m super-excited to know that I’m able to visit and see both the old friends I know well and the new friends I haven’t met yet. I attended this conference last year and it had a great atmosphere; this year the content is better again and with three tracks, I don’t know how we’ll choose which sessions to see!

Are you attending? Leave a comment and make sure to come and say hi at the conference in Belgium :)

Google Analytics Accounts API

I’m working with Google Analytics at the moment, to pull information about web traffic from analytics into another system. Google have excellent APIs and that makes this job much easier. I’m using pecl_oauth to authenticate users against their google accounts (see my post about using OAuth from PHP), but even after I have a valid google user, working out which analytics accounts they have access to and how to refer to them is a puzzle in itself, so I thought I’d share what I learned.These examples use pecl_http, since I have control of my platform and I find it easy to work with. I’ve tried to write this with explanations of the overall process in between the code snippets so hopefully this makes the process clear whether or not you will use exactly the same implementation.

Analytics Accounts

Your google account can have access to one or more analytics accounts. For example when I log in I have access to accounts which hold the data for lornajane.net, phpwomen.org, joind.in and a few other things I’m involved with. Only lornajane.net actually belongs to me, the others are accounts created by someone else and which I have access to. The first challenge therefore is to work out which a user has access to – the best place to start is the reference page for the Management API, part of google’s own documentation. In a nutshell, we build up a URL like this, being increasingly specific by fleshing out the values in square brackets on subsequent calls:

https://www.google.com/analytics/feeds/datasources/ga/accounts/[accountID]/
webproperties/[webPropertyID]/profiles/[profileID]/goals

First up then, is to get a list of accounts for our authorized user – I already have a valid oauth access token to use in this example Continue reading

360 Degree Feedback

I mentioned the 360 Degree Feedback Technique during my keynote at PHPNW10 and had many comments and questions about it since, so I thought I’d post about it in more detail

Introduction to 360 Degree Feedback

The basic premise of 360 degree feedback is that rather than being given performance feedback at work solely by your superior, the feedback comes from people all around you. This would include your manager and your peers, but could also include your direct reports, and people that you work closely with from other areas of the business. For example a developer might receive feedback from the rest of the development team, the design lead, and the project manager.

Continue reading

256 Colours in Vim

Recently I’ve been looking at different vim colorschemes, after using vimdiff and finding I couldn’t see half of the code. I’ve been using relaxedgreen for ages, and it is excellent but I find the blue really hard to see on my black background so I was in the market for an alternative.

Touring Colours in Vim

Please excuse the all-over-the-place spelling in this post, I’m British so “colour” is a word and “color” is a vim command. Confused? Me too

I grabbed two fantastic scripts – the Vim Color Sampler Pack and the rather awesome ScrollColors plugin which allows you to cycle through all your colorschemes and try them out.

Continue reading

Curl and Cookies

I noticed the other day that the cheat sheet I have on this site for curl doesn’t show how to use cookies, so I thought I’d remedy that omission, and quickly! Being able to use the command line to authenticate and then go on and use part of a site behind a login box can be really handy, and it is also super-simple.

-c to Save a Cookie

Pass the -c switch followed by a filename and curl will write the cookies to a file. This is the “cookie jar” and you can dip into it whenever you want to send the cookies back with a future request. For example:
curl -c cookies.txt http://www.lornajane.net
This writes a file named cookies.txt to the local directory. When I look in it, it contains:

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

www.lornajane.net FALSE / FALSE 0 s9y_4e071c5ccc553288993faf0369cb076c 539e01676501366ea0f04e2646b1a31d

-b to Send Cookies

All I do when I want to use the cookie on future requests is pass exactly the same command but with a -b switch; this will read the named file and send the cookies along. You can edit the cookies as you wish, at your own risk of course, and this makes the use of cookies and curl an absolutely invaluable technique for testing! It’s also common to use it on sites where you want to download a file directly to the server but the site requires login first.

Business Strategies: Office Day

I’m now self-employed, which means that I have to do my own administration, invoicing, accounts, correspondence, sales, marketing and maintenance (not to mention running the household, a sports team, and whatever else I’ve volunteered to get involved with lately). I am pretty organised as a person, which is a real gift now I have all this going on! I have some coping strategies and I thought I’d share one that has helped hugely – the office day.

The idea of the office day is that I block out a whole day every month or so where I’m not going anywhere, not on site with clients, not speaking, not delivering anything, just in the office, doing whatever needs doing. I tend to put these days in either day before or after runs of days away – either with clients or at events, just to give me time to catch my breath. Working this way means that when I’m working on something, I can just work on it, and know that there is time set aside for all the little things. Also the days where I’m just back from somewhere and the inbox is so full, it is ready to bite, then it gives time to get things straightened out and right, without feeling stressed because there is other work to do. Although it does mean that I’m not doing billable work that day, I find that splitting the work up like this works really well for me, and I thought I’d share – perhaps this suggestion will help someone else, and I’m always interested to hear how others fit in all the business bits and pieces around their “real” work.

Fetching Namespaced XML Elements With SimpleXML

Recently I was working with some google APIs and needed to retrieve some namespaced elements from the result set. This confused me more than I expected it to so here’s my code for the next time I need it (and if you use it too, then great!)

I was reading from their analytics data feed API, this returns a few key fields and then multiple <entry> tags, each with namespaced children. The entry tags look something like: Continue reading

Be My Guest for DayCamp4Developers

This weekend I’m presenting at DayCamp4Developers, a virtual event comprising a full day of workshops for developers of all disciplines to improve their soft skills and move forward in their career. I get to attend since I’m speaking, but even after I’ve given my slot I know I’ll be online to watch the other talks and I know I’ll learn something myself! I believe that, however good your technical skills are, being able to communicate effectively means the different between being the bearded expert in the corner who knows everything but has been in the same job 10 years, and being the high flier that soft skills and technical skills combined could make you.

I have one guest ticket for this event, and I want to make sure that it goes to someone who will make good use of it. So, if you would like to be my guest for DayCamp4Developers, this weekend 6th November, then leave me a comment and tell me why you want to attend. In a couple of days (probably Wednesday evening, UK time) I’ll close the comments and pick a winner – put your email address in the comments box (it isn’t displayed) so I can reach you and let you know.

If you don’t win, and want to join us anyway, then you can still buy tickets. Check with your local user group if they have an affiliate code and if not – use this link to buy your tickets, using my affiliate code ;)

Looking forward to “seeing” everyone on Saturday!

Posted in php