Crochet Tutorial: The Slip Knot

I often get asked what “crochet” is … well, you can read about it on wikipedia, but actually its really easy … so I’ll teach you :)

Here’s the first task, all you need is a bit of yarn, or string, or anything really.

Part 2 coming soon …

PHPNW 2008 – 22nd November

I’m wildly excited to be able to tell you that the PHP North West Conference now has a date and venue confirmed! The event will be at Manchester Central (apparently this used to be the GMex), on Saturday 22nd November with an early bird ticket price of £50. At the moment we have no website, no confirmed speakers, and no other information to release … but rest assured there are lots of plans being worked on behind the scenes!! The site for the PHPNW user group and conference will be at http://phpnw.org.uk and there is a mailing list you can sign up to already.

The event is aimed at people working with, or wanting to work with, PHP in the north of England. We’ll have a selection of sessions, with the technical content intended to be accessible to a whole range of audiences – it will also be multi-track so there’s sure to be plenty of material to interest you, whatever your background. We will be having a call for papers for the sessions, and we’re hoping that we’ll get some good submissions – particularly from senior developers around the area and the wider UK. Whether you’re hoping to speak, hoping to learn, looking for a good crowd to mingle with on a Saturday, or you just really like PHP geeks – put 22nd November in your diary and I hope I’ll see you there!!

If you have any questions, comments or suggestions about this event, just let me know (I’m not organising the whole thing but I’m helping!), either by leaving a comment or by contacting me directly.

Bubble Wrap Camera Case

I’ve made a new case for the camera, using bubble wrap as padding. The inside is microfibre cloth (note to self: don’t ever use this again, its too fluffy for words and frays much too easily!) and the outside is crochet with a button fastener.

I started by making the inner microfibre liner with bubble wrap around it:

inner pocket

I then made the crochet outer, using some gorgeous dark turquoise wool I bought in Germany last year and which has been waiting for a project just like this one! Its quite fluffy but that doesn’t matter as the bag is lined. I added a button to close it, a carabiner to hang it from, and a place to hook the tripod onto if we are taking that too. Here’s the finished product – it looks a bit strange because its empty, since I was using the camera to take the photo!

crochet and bubble wrap camera case

(there are a few more photos on flickr )

Accessing Incoming PUT Data from PHP

Recently I started writing a REST service. I began in the usual way, writing a php script, calling it with a GET request, accessing the variables using the PHP superglobal variable $_GET. I wrote code to handle a POST request and used the variables I found in $_POST. Then I tried to write a PUT request.

PHP doesn’t have a built-in way to do this, and at first I was a little confused as to how I could reach this information. It turns out that this can be read from the incoming stream to PHP, php://input.

file_get_contents("php://input");

The above line provided me with a query string similar to what you might see on the URL with a GET request. key/value pairs separated by question marks. I was rescued from attempting to parse this monster with a regex by someone pointing out to me that parse_str() is intended for this purpose (seriously, I write a lot of PHP, I don’t know how I miss these things but its always fun when I do “discover” them) – it takes a query string and parses out the variables. Look out for a major health warning on str_parse() – by default it will create all the variables all over your local scope!! Pass in the second parameter though and it will put them in there as an associatvive array instead – I’d strongly recommend this approach and I’ve used it here with my $post_vars variable.

parse_str(file_get_contents("php://input"),$post_vars);

This loads the variable $post_vars with the associative array of variables just like you’d expect to see from a GET request.

Simple Example

Its a bit of a contrived example but it shows use of the REQUEST_METHOD setting from the $_SERVER variable to figure out when we need to grab the post vars. Firstly, here’s the script:

if($_SERVER['REQUEST_METHOD'] == 'GET') {
    echo "this is a get request\n";
    echo $_GET['fruit']." is the fruit\n";
    echo "I want ".$_GET['quantity']." of them\n\n";
} elseif($_SERVER['REQUEST_METHOD'] == 'PUT') {
    echo "this is a put request\n";
    parse_str(file_get_contents("php://input"),$post_vars);
    echo $post_vars['fruit']." is the fruit\n";
    echo "I want ".$post_vars['quantity']." of them\n\n";
}

And here’s what happened when I request the same script using two different HTTP verbs. I’m using cURL to show the example simply because I think it shows it best.

Via GET:

curl "http://localhost/rest_fruit.php?quantity=2&fruit=plum"
this is a get request
plum is the fruit
I want 2 of them

Via PUT:

curl -X PUT http://localhost/rest_fruit.php -d fruit=orange -d quantity=4
this is a put request
orange is the fruit
I want 4 of them

Purists will tell me that I shouldn’t be returning data from a PUT request, and they’d be right! But this does show how to access the incoming variables and detect which verb was being used. If you’re going to write a REST service then the correct naming of resources and the correct response to each resource being accessed in various ways is really important, but its a story I’ll save for another day. If you use this, or perhaps you access the variables another way, then do post a comment – there aren’t a lot of resources available on this topic for PHP.

Flickr Plugin Weirdness

I am an increasingly avid flickr user and have a growing collection of photos on my flickr account. It seems daft to upload photos twice all the time so I tried the flickr plugin for serendipity (my bloggling platform) but I couldn’t get my account to connect correctly. In the box labelled “flickr username” I added my flickr username, “lornajane”, which appears in my photos URL. However the plugin seemed to think my photos should then be at a URL:

http://www.flickr.com/photos/64718621@N00/

which they obviously weren’t. I played around with this for a while, also trying my yahoo user id and getting nowhere.

Eventually I tried another flickr plugin on another site and got identical behaviour – at which point I logged a support ticket with Flickr to ask what I was doing wrong. It turns out that “username” in this case means this label here:

Never noticed that before, and its certainly not how I refer to myself, so I’m a bit confused – but hey my plugin is working! I hope this helps someone (probably me, next time I try to plug flickr in to something else) confused by flickr seeming to think you have the wrong username!

Ibuildings Seminar, Leeds

My employers, Ibuildings, have been running a series of seminars where we invite a few people (and it is a few, they are generally small events), bring some of our developers along, and have some technical tutorials, demonstrations and general discussions, and some food. The previous events have all been well-received and sound very civilised (and there’s food, which is always good!)

I’m happy to announce that Ibuildings is venturing north of the Watford Gap – and the next event will be in Leeds, on the 9th September, the full details are at http://www.ibuildings.com/events/leeds. The main tutorial session will cover source control with Subversion, including advanced concepts such as merging and repository structures. We’ll also look at deployment strategies for different types of software development processes and tools that can be helpful in this area. I’m delivering the main tutorial at this event, and if that wasn’t enough incentive, I’m also bringing the nabaztag as my glamourous assistant!

We’ll be running events in a lot of other areas of the UK as well, so if you can’t make this one then watch out for more announcements or tell us where we should be running the next one! If you have any queries about any of these events then feel free to contact me, I hope I’ll see some of you in Leeds in September.

Announcing the Leeds Girl Geek Dinner

Once upon a time there was a girl geek called Sarah Blow, and she wanted to hang out with her girl friends and geek out at the same time (and who wouldn’t?). So she founded the phenomenon of the Girl Geek Dinner in London. Well this great idea has spread and spread around the world and eventually to the North of England – first to Manchester (next event, this Friday 25th July!) and eventually to Leeds.

So I’m pleased to announce that, on Wednesday 13th August there will be the first Leeds Girl Geek Dinner!! Tickets are £10 and if you needed any further encouragement, I’m one of the speakers for the evening. If you’re going, or have any questions, leave a comment below – and I’ll see you there!

LugRadioLive Wolverhampton 2008

Yesterday I had an outing to the LUGRadio Live event in Wolverhampton. To be honest this isn’t my usual kind of crowd but it was local, the talks looked interesting and so off I went.

Well it was a very interesting day – the highlight was of course meeting Emma from emmajane.net – I enjoyed her talk and also her company for both lunch and dinner. Predictably there was an excellent crowd and I had a wonderful time – a few people were there from WYLUG and I had a really good chat with Robert Collins from Canonical, nominally about bzr but in reality we also put the world to rights which was illuminating and good fun. Here’s me and Emma having dinner:

I met a few IRC friends too, some I knew before, some I was hoping to run into and one who stopped me (in my phpwomen shirt) and went “oh, you’re the UK girl from phpwomen …. lornajane!!” which was very cool :) I was also impressed by the “low tech wiki” and “low tech open streetmap” … large pieces of paper and pens.

I also met Dave and Kat from Pale Purple and had a good long chat with them so all in all it was well worth the trip (there are a few more photos in the flickr set if you’re interested). Well done to the organisers for a great event!!

LugRadio Live UK

I’m attending LUGRadio Live UK this weekend, in sunny Wolverhampton! I’m slightly concerned that this might be too geeky for me and I might be scared but there are people I’d like to meet, the talks look interesting, and I can imagine it will be a pretty good crowd. If you are there, please come and say hi to me – I’m very easy to spot because I am tall and female with curly hair, usually a rare combination at any technical gathering :)

Circuitboard Cake

There’s a birthday in my household this week so I have been making a surprise cake, which I do every year. Apart from the year where all our stuff was in storage and I only had fairy cake tins, where I made surprise fairy cakes instead! This year I went slightly overboard and created a circuitboard cake! In fact it was an astable multivibrator circuit, in case you’re interested – see http://www.play-hookey.com/digital/experiments/rtl_astable.html.

First I made the cake, and dyed a whole load of white roll-out icing green. I also dyed myself green which you would think would give away my secret mission but happily he is less observant than I feared. Then I iced the cake – this was my first mistake because I forgot to put something over the cake to make the roll-out icing stick! Usually either watered-down icing or jam is good.

sponge cake iced sponge cake

I had a whole stack of packets of sweets to use to create the components from. I needed transistors (round liquorice with a flat bit sliced out of them), LEDs (jelly dolly mixtures), capacitors (round dolly mixtures), and resistors. The resistors were easily as complicated as the whole of the rest of the components put together and next time I will just buy as many colours of write-on icing as I need to do the stripes! In the event I made the stripes out of various things wrapped round marshmallows, including red laces, the offcuts of the green icing, bits of liquorice chopped really small, and (for the orange and brown) coloured bits of dolly mixture, separated from the white bits of sweet, mashed together, rolled out, and then cut into strips.

raw materials edible components

So, here’s the finished article (and a closeup of a couple of the components)

completed cake

edible component closeup