« I'm Chris Kemper, and this is my blog

My time at Buttermere

13 Oct 2015

TL;DR I went to Buttermere, it was awesome, see you there next year.

Friday the 29th of June 2015 is when the journey to Buttermere began. I was at work and was getting picked up after I finished, so we could make the two and a half hour journey down there. It's safe to say I wasn't really prepared, I'd gotten my tent back from my dad's, but not checked it, I had no waterproofs, you can see where I'm going with this.

Anyway, I figured it was worth checking my tent to make sure it was alright, which probably wasn't the best idea. Thanks to the way it had been put away, the poles were on the top and I could see snapped elastic, oh boy. After debating whether or not I had time to buy a new tent (I totally would have) I packed it away, grabbed the rest of my stuff to and headed over to a nearby church to get picked up.

I was traveling down with a couple of friends of mine, Dave and Ruth, who also happen to be a couple. Ruth was driving down, and Dave had the lovely task of drinking with me. We put on the CD Dave had carefully put together for the trip, filled up my protein shaker with beer, and we hit the road.

Yes, I did say protein shaker with beer, and it's a brilliant idea! My particular shaker holds something like 450ml, which was more than enough to house the cans of Stella I was drinking. This means that your beer now has a lid, but if you leave it on too long the lid will pop off, because gas build-up is a thing.

When you're drinking beer or any other alcoholic drink for that matter, soon enough you need to break the seal (have that first toilet break) and Dave and I were no different. We stopped at a pub for a toilet break, and the looks we got walking in there were brilliant. Part of me wasn't sure what was going to happen, like if they had all stood up in unison and walked towards us, I wouldn't have been shocked. Luckily though, none of that happened and we were soon back on the road.

A still from a vido I took mid-journey

Once we got closer, we needed to stop again and check with a local to make sure we weren't going over Honister pass. For those unfamiliar with the pass, it's a pretty hilly road to say the least, although if you do decide to tackle it, you get rewarded with some lovely views.

After some beautiful scenery, we finally arrived! We'd managed to secure a spot on top of a hill at the site, which we'd been eyeing since last year. We parked the car close to the bottom of the hill and finally said our hellos. In the camp already were those driven by my cousin Andy, who'd left about an hour before us. In the Lexus, we had Andy driving, his lady friend Fay up front (I call them Fandy) with Kane (my brother) and Kyle (he's just Kyle) in the back.

Lake Buttermere

With the hellos over and done with, it was time to get set up. Now it was finally time for me to see how bad my tent actually was. If it had've been in perfect shape, the tent would have contained two poles made up of seven smaller poles, connected with elastic. I could see elastic, but the poles were not connected. On my first inspection I'd thought there wasn't enough poles, but it seems I was wrong, they were all there, just not connected. I thought putting the tent up without the elastic would be horrid, but it wasn't actually that bad. Once it was up I picked a spot and pegged it down as needed, because at that moment the weather was too good to be wasted putting up tents.

Where we decided to set our tents up, away from the crowds

At this point our party was nearly complete, we were just waiting on my brother's friends. Due to space issues, and the fact my mam didn't come along this year (she was missed, very much!) we didn't have enough seats for everyone. To solve this, Kane's friend Andy (yes, another one) had roped his dad into dropping him, Berty and Sam off. We saw they'd arrived so I went down to help out, we grabbed all their stuff and headed back up to the camp. We had two more tents to put up, and both owners didn't know what they were doing, so I helped them all get set up, and finally we were done.

The site itself was centred around a main marquee, a beer tent, a burger van and a tea truck, with a large amount of space reserved for landing paragliders, and of course, the beautiful lake. We had to head over to the beer tent to get our wristbands and pay for the Friday night's camping, so we paid out £25 and could finally relax.

The main area where most people were camping

The main event for the actual Buttermere bash was on the Saturday night, so Friday we decided to go to the nearby cave. Now this cave isn't really a cave, it's a more of a tunnel, or just a tunnel. I actually saw the sign for the cave the next day in the light, and it said something along the lines of "Come and look at a natural cave (ok so maybe it's a tunnel, shhh)" which I thought was brilliant. It's quite a nice walk over there, and the views by the lake at night are something else, it's so peaceful. I tried to get pictures, but my iPhone just couldn't do it justice, but you can trust me, the moonlit lake surrounded by mountains is beautiful.

I was a few protein shakers in at this point (beer filled, of course) as were the rest of us, but Dave sadly seemed to be a little bit worse off. As you explore the land around the lake, it's all public footpaths, but in the dark we happened to miss a gate through a fence. On the way over, all was fine, but on the way back, Dave had forgotten the barbed wire on the fence and sadly hurt his hand and bum. He couldn't just keep quiet, so he ended up shouting "owwww, I've hurt my bum!" when it happened. He was fine, he was just drunk, you know how it is.

The now 10 strong group headed back to camp to ready ourselves for the first night, which meant I could finally check out how bad my tent was. Turns out it was pretty bad, there were a lot of burn holes in it from previous camping trips (not mine I might add, my younger brother) including holes in the sides, and one in the roof. Luckily for me though, the weather was pretty good on the first night, and if it did rain, I didn't notice. Mainly because unknown to me I had pitched my tent in a ditch, and a sleeping bag with no roll mat is only so thick.

After what could barely be classed as sleep, it was finally the main event, Saturday. A good few of us said we didn't want to waste the day at camp like we did last time, so it was time to explore. At around 12 or so, after a trip to the burger and tea vans, we headed off. Like good explorers, we'd packed plenty of liquids, this liquid just happened to be beer. We were now a team of four: Dave, Ruth, Kyle and of course, me. Fandy had decided to stay at camp, and my brother and his friends had their own thing going on.

We'd planned to head up to a waterfall on the other side of the lake. I hadn't actually climbed the waterfall before so I was rather excited to get started. But before that, we decided to go and grab a beer at a pub in a nearby village, and to get there we have to go through the tunnel cave. We all had a laugh remembering where Dave had hurt his bum the previous night.

The pub was called: "The Fish Inn" and it was just what we needed. We had a couple of bowls of chips with our beer (thanks, Ruth) and after more beer (Dave was a bit hungover and was taking his time) we finally made tracks towards the waterfall. It was a bit of a mission to get to the base of the waterfall, but we got to see some picturesque sights on the way.

There were a few small bridges on the route to the waterfall. One of them had a basket near the steps and I could see a sign on said basket. I was hoping it was going to read "Pooh Sticks" and it did! If you don't know Pooh sticks, then I can only assume you haven't read Winnie the Pooh. Either way, the game is simple. You need a bridge over a river, and a stick for everyone that's playing. You stand on the bridge and drop your sticks downstream at the same time. You then cross over to the other side of the bridge, and the first stick to come through wins - easy.

Pooh sticks!

We all had to have a go, so we had a few games. I can't remember who won exactly, but I know it may have been everyone but me, I deffo didn't win. The sign also mentioned about being nice to other families and not taking too many sticks but in our case the basket was empty, so I topped it back up and we carried on.

Finally after another short walk, we arrived at the base of the waterfall, which meant it was time to climb! I may have been a little excited at this point, so I powered ahead and started heading up, grabbing various pictures and footage as we went. On the way up, we found a relatively flat part next to a log, where we decided we'd leave our extra stuff, and hope it was there when we got back (Spoiler Alert! Everything was still there) so we dumped it all and headed up.

I kept scampering up the waterfall, so I could sit and enjoy the view while the others caught up, and shout words of encouragement, or shout "Wheeeeey" should anybody fall over, which they did ha. When the others caught up this time, I decided to be more sociable and didn't scamper off. We found another place to stop off that was nice and flat, and just really damn relaxing. We chilled out for a while, but I wanted to carry on, so with permission to leave them behind, Dave and I headed further up, leaving Kyle and Ruth to chill.

One of the many pictures of the waterfall I took

The problem with climbing a waterfall is that, unless you have a way to measure how high you are, or you can actually see the top, you have no idea where you're climbing to. We kept climbing up to the next level, then seeing there was another level after that, and so on. On the journey there was an overturned tree. Its roots were covered in rock and it'd clearly been blown over - they must get some strong-ass winds! After a few levels we realised we'd been gone a while, and that getting down would take us longer, so going much further would've been a dick move, so we decided to take five then head down.

We'd finally gotten high enough to break the tree cover, so we could really admire the view, and it really was beautiful, and so peaceful. We also spotted all the supplies needed to build a fence. We couldn't work out if this was for a new fence, or to repair an old one, but either way knowing the land is being maintained is a nice thought.

Before heading down, there was something that had to be done. Dave started stripping off, and asked me to take a picture of him. The picture in question was taken from behind, with the scenery as the main focus, it just so happens Dave's ass was out. After showing him the photo (after he put his clothes back on) he asked me if I wanted one too. He knows me so well. I decided to stand on a wall for mine to make it a bit different. I've gotta say, standing naked, on a wall, up a waterfall, is pretty damn magical.

After admiring the view for a little while longer (the scenery, not the asses) we headed back down the waterfall. Going down is always harder than going up (whey..?) so it took us quite a while, plus we seemed to have opted for the super-slippy, super-unstable route on the way down, which made things extra fun. The journey down wasn't anything amazing, and we eventually met up with Kyle and Ruth, and we all had a nice chill.

We'd picked a nice flat spot to relax, it worked out really well for us and we ended up staying for a while and just enjoying ourselves. We were out of the campsite around 5 hours, so it may well have been a long time. There was a rock in the middle of the stream and I joined Kyle on there. The sound was amazing, the water just rushing past, it was so tranquil.

After we got bored of relaxing, we ventured down the rest of the waterfall. This was most un-eventful, except for Kyle falling on his ass (I tried to get a video, but missed my chance) which was pretty funny, and I got a picture which was nice! After the joy of seeing Kyle fall over, we were soon back on the ground, and thirsty. It was time to head back to the pub for a beer.

Kyle after he'd fallen over

Once we got to the pub I thoroughly enjoyed my pint. Although I'd had a couple of cans on the journey, nothing beats a nice, cold, refreshing pint (if I didn't have a drink while writing this, I'd probably be salivating, but I am on a plane to Benidorm) and we all enjoyed ours. No food this time, so we had our beer then headed to a nearby coffee shop to grab ourselves some much needed caffeine. As a regular coffee drinker, I generally have at least one or two a day, and the latte from this coffee shop was my second.

Dave had mentioned to me that he wanted to make a video with various bits of footage from the trip, so I'd been on video overload trying to get as much as I could. While I was filming, I saw a sheep just casually walking along a wall. It was pretty impressive I have to say, I also got a picture...

A sheep that just didn't care about where she walked

Other than the sheep on the wall, the walk back was pretty dull. When we arrived back to the camp, everybody was around the fire. Unknown to us, while we were away there had been quite a severe accident involving one of the paragliders, who had to be rushed to hospital. From what I was told, they came down to land, but just before touching down they were caught by the wind and dragged back into the air, where the paraglider stalled, resulting in a horrible landing. I don't have any more information on this, but I really hope whoever was involved is alright, and wasn't seriously hurt.

After a bit of relaxing, I decided to have a nap. The last few years I'd been to Buttermere, I'd always not really done much on the Saturday night, and this year I wanted it to be different, so hence the tactical nap. It didn't help my case that I barely slept the night before, but I ended up sleeping so long that everyone had started heading to the music tent without me. So I sorted my shit out, and headed on over there.

The music in the tent was so good. There's always a good mix of easy going music, mixed with Ska and rock, so it's just all really awesome music to dance to. When I found everybody else, I also found my friend Lucy, who I ended up dancing around with, while her boyfriend kicked some ass on the dance floor. I can only describe Yohan (Lucy's boyfriend) as a dancing windup toy, you just wind him up, and watch him go. He was throwing some serious shapes and rocking some serious moves, which just added to the Buttermere experience.

I had no concept of time while we were in the tent. As the bands came on, I just kept dancing. Eventually though, the bands stopped and the silent disco started. At this point, I was actually alone. I'd ventured back to the tent to grab another drink, but in doing so I'd lost everyone, so I tried to find them. We have a code phrase we use when we lose a friend, which is just shouting "OOORRRRUUUU" as loud as you can (think Fosters advert, the word is awesome) but after walking round the whole campsite, I couldn't find anybody.

I figured I may as well hit the silent disco. I had nothing else to do, and thanks to my epic nap, I wasn't really tired, so I decided to head back to the tent and grab some money for the silent disco. The entry cost was only a fiver, but a £10 deposit was required. I had £10 in my pocket, but I'd managed to lose it somehow. I didn't drunkenly spend it either, I just genuinely lost it, so I figured it was bedtime after that. When I eventually got back to the tent, I ran into Kyle and Dave who had been looking for me just as long as I'd been looking for them.

We all decided to have another drink, so we wandered over and sat in the beer tent. This was fine for a while, we had no issues and were just having a laugh, but then a girl called Louise tapped me on the shoulder. I've got to say, this kinda stuff never happens to me, so I was loving all of this. Anyway, Louise wanted to congratulate us on our awesome performance, especially me, as I was the lead singer, apparently. I've made peace with the fact that I'm not some insanely hot frontman type, so having someone think I was, for whatever reason, was quite fun. So Louise had come over to get a picture with us to show all of her friends that would be "Soooo jealous" that she got to meet 'us'. I'm so glad Louise didn't ask me what 'my band' was called, because I have no idea who actually performed at Buttermere, I just know they were all awesome, and I most certainly wasn't the lead singer from any of the bands.

A shot of the 'band'

So as you can see, I took the pictures, and I took Louise's email to send her the pictures (I did as well, and explained things) because I couldn't send her them then as her phone was dead. Although the whole thing was quite funny and enjoyable for us all, my favourite part has to have been when Dave tried to say "Oh yeah, I was the drummer" (he plays drums) and Louise instantly shot him down with a "No you weren't" and carried on talking to me. Kyle tried the same kind of thing with the ukelele (he does play it) and actually got away with it, so Dave's face was brilliant. Building on our success, we decided to get a bar shot of everybody that fancied it.

A group shot in the bar, I have no idea who most of these people are.

After we got the group shot, we were out of money and beer, so at around 2am or so we decided to call it a night and headed back to our tents. That night was horrible. Wind and rain constantly, you just couldn't sleep in it. My tent was only just coping, and, I had to keep moving around to make sure I didn't get wet from the water coming in. My brothers tent was flooded, and a few of our friends'. At one point, Fandy even went and slept in the car.

The morning was horrible, nobody had slept well at all. I had enough money left for one last coffee, so I went to the coffee truck to get my caffeine fix. After around an hour or so of being back, I'd pretty much packed everything I owned and was ready to leave. To be honest, I was just looking forward to taking my tent down so I could throw it away, and I'm glad to say that tent is now in the bin.

After a lot of pretty much nothing, Ruth tried to pull her car off the hill where we had both parked, and moments later, it was stuck. We had a huge mission to get the cars out (yes, cars, Andy's got stuck too) and we ended up being towed out by a very nice gentlemen. If I see him next year, I'll buy him many beers. We were suck for ages though and tried everything, including a lot of pushing, trying to dig out the wheels, all sorts. The ground was really swampy and we were fighting a losing battle, so the tow was very needed.

We headed back in our respective cars, but the whole group didn't leave. Kane and his friends Berty and Andy had to wait for my mam to go and collect them in 'The Prof' (Kane's car's name, my mam bought him it from my friend Jonny, to inspire him to pass his test) and take them home. Kane actually had a seat in Andy's car, but gave it to his friend Sam as he was having a really bad time and needed to get home. My mam called me to ask for directions a couple of times, but ended up getting lost, which meant that Kane and the guys weren't picked up for a good two hours after we'd all left.

When my mam eventually did pick them up, a big milestone happened. The Prof was very close to 100k miles, and Kane was driving when the dials eventually rolled over and hit that magic 100,000. This is a big deal, and Kane got to hit this huge milestone in 'The Profs' life, and make his first of many more memories in his car. They eventually arrived home some four/five hours after we'd originally left Buttermere, which must have sucked.

I had such a good weekend, and I'll be there again next year. So if you're there too, be sure to say hello :)

Read full article or add comments

A journey to #PHPBenelux

03 Feb 2015

TL;DR I went to PHPBenelux, I learned a lot, it was awesome!

Not only was this my first PHPBenelux, it was also my first non-UK based conference, so this was a pretty big deal for me. We (Anthony, Peter and I) arrived on Thursday night and headed to the main conference on Friday. Since we didn't have tutorials or anything like that, we just headed straight to the conference, let the games begin!

PHPBEnelux, Welcome and enjoy the show!


The checkin process was nice and easy, and we were met with a large amount of fruit and drinks (Including precious coffee that I hadn't had yet) which were openly welcomed after the amount of walking we'd done looking for breakfast. We (foolishly) thought if we looked around long enough, we'd find somewhere that did an English style breakfast, but that didn't work. McDonalds do breakfast, but we didn't realise till after we'd settled for regular food.

Anyway. The conference.

Keynote: Talmudic Maxims to Maximize Your Growth as a Software Developer - Yitz Willroth

The opening Keynote was brilliant, and really spoke to me on a lot of levels, it was just the best start to the conference I could have asked for. I even attempted to do sketch notes (even though I can't draw) which didn't turn out that bad, but I suppose you can judge that for yourself.

My attempted sketch notes

I took a lot of lessons from the talk, things from pair programming, up-for-grabs, php mentoring, and many other things. At the start of the talk, Yitz tried to make us pick just one thing to take away from the talk and try and achieve. I'm Sorry, Yitz, but I took far more than one thing, I hope that's alright. It's quite clear though...

PHP Performance Tuning: Prepare for Ludicrous Speed - Davey Shafik

I got a lot of benefit out of this talk, because for some reason (I know, I know) I'd never looked at profilers before, so seeing the power that's available was very useful to me, as well as being able to see the gains it can bring.

I was half expecting there to be more low-level optimisations given the title of the talk, but we covered a lot on XHProf, and because I'd never covered it, or any other profilers before, this was really useful to me, and I came away wanting to install all of the profilers!

Profile, all of the things

Low-Level PHP: Getting started with Go - Benjamin Eberlei

This talk was brilliant for me. I got a great understanding of the basics of Go, and got reminded of a few things I'd forgotten. The overview to Go was brilliant, especially how to work with threading, and how easy it is to actually get going.

One thing in particular was, when you're coding something new, it's alright to leave everything in one file and not organise it as you would a language you're familiar with. I keep thinking I'd need to have everything looking nice, but then I remember my first HTML and PHP files were both far too many lines long, it just works for me. Also, Benji shares the same view I do on coding things for no reason, there needs to be a purpose, and with Go and it's awesome concurrency, I'm sure I'll find a use for it very soon.

Hallway track

I took a little break after this, and decided to explore the conference a little bit. Sadly for me, I'm just not there yet when it comes to creating conversations out of nothing, so I didn't really talk too much. I did however go and see the Continuous PHP guys and built myself an ElePHPant (although I forgot the ears), I also had a go on the Sparkcentral drone, I wasn't very good at flying that.

My attempt at a Lego ElePHPant

Handling Highly Connected Data with the Neo4j Graph Database - Michelle Sanver

I've been wanting to play with Neo4j for ages now, but when I couldn't get the thing installed, I'd decided to give up, so this was just what I needed. I hadn't realised how easy it was to get started and get some data in the with the WebUI, and the query language (Cypher) is nice and easy to use, which also makes things a lot easier.

Michelle mentioned OmNomHub in the talk, which is a really cool use of Neo4j which, as the repo calls it is: "Like github! But for recipes :)" and it's worth checking out.

The biggest thing I got from the talk (Other than a much needed Neo4j intro) was the inspiration to do my own, so at PHPNE, I'll be doing a Neo4j talk some time soon!

The infamous Friday Social

I got into the social first, so I got myself a drink and camped next to the Digital Ocean Simulator. Now, this is where I was an idiot. I saw people showing up with chips, so I was like, wtf? I looked around loads but couldn't see them. I'd messaged the guys but got no reply (we were communicating via Slack) so I just kept walking. After a while, I found the guys and they tell me the chippy van is outside. I really should have had the balls to ask someone, I need to work on that.

I grabbed a beer with the guys and we looked around. I finally had a go on the wave machine (I'd been waiting so the guys could see me fall off.) I popped a balloon when I fell off, it was awesome. I managed to grab a Digital Ocean T-shirt as well (I have a thing for T-shirts) so we hit the tables (Casino tables, that is) with our Benelux Bucks. We wanted to leave quite early, so I wasn't very strategic with my betting, I went big on a couple of numbers on roulette (I should have played poker) and lost pretty quick. Sterling lost his quite quick as well, and we waited for Peter by the punching machine. I was getting steady 750-790's but I never broke 800. As I always do before I quit something after I've tried a million times (figuratively, of course) I said, "One more go," or on occasion, "Uno mas." I gave it one more, and got an 811! I was happy and said something like "I quit, I'm done" holding my hands in the air. I did have a couple more go's but they were only for fun, I was just happy I'd gotten it when Id said, "One more go". We finished our drinks and left, and headed back to the hotel.

811, I'm happy with that punching machine score!

During the day I'd been on about making a Vagrant box with Neo4j so I could tinker with it, and Sterling said, "We'll hack on it later if you want?" I did want to, so back at the hotel, thats what we did. We managed to get the box up and running with Neo4j with a single script (Nothing wrong with doing things in one file) but we couldn't get the admin interface to show up, after trying what seemed like everything. We called it a night and headed to bed, we had an early start in the morning.


We got up nice and early and headed to the conference. I only had a hoody and a jumper with my, and before I actually got up, all I could hear was heavy rain. Turns out when we got outside, it was snowing. I thought being English "Ah, this'll never lie". Oh how wrong I was. We got the bus fun, the snow didn't bother the public transport at all (even though the snow was quite thick at this point) so we got to the stop for the conference without issue. The walk to the conference was lovely, I really enjoyed the snow, it was good snowball snow. I had to make one, just to be sure.

I do love a snow covered house

We got to the conference and ended up being the first people there. We ended up playing pool until the first talk, being sure to get plenty juice and coffee beforehand.

Migrating to DDD - Anatoly Pulyaevskiy

This talk was a good start to the 2nd day for me. I really enjoyed that it was built around an example rather than theory, and the content was brilliant. I left that talk with a much better understanding of how DDD worked, and that you can even migrate to it slowly over time.

I did have a question, but didn't have the balls to ask it, I really need to work on that.

More hallway track

After the first talk, I wanted to get the Neo4j box working, so I took time out from the talks and went to hack on it some now. Eventually, I found the reason for the problems, more specifically, this line:


By default, the webUI binds to localhost, so unless the above is commented out, it would never be available outside of the vagrant box, problem solved. After sharing my win, I then put the now working box on GitHub, and I even tweeted about it. Since then, the box has been updated to work with Puppet, thanks to a Pull Request from Sterling.

Small Uncontrolled Experiments - Mathias Verraes

This talk was fantastic, and my other main standout talk from the conference as a whole. If you haven't seen Mathias speak before, then you really need to. No matter what the subject matter is, he always delivers a brilliant and funny talk, and this was no exception.

The idea of everything being a small experiment was brilliant, and that it's alright to fail. You never really know until you try, so why not just try it? If you realise it's not working after a week or two, scrap it. If you realise the experiment was a huge success, then make it a rule.

The main point I took away from this brilliant talk was:

Experiments are better than opinions, always!

If you have an idea and you can try it easily, then just try it, what's the worst than can happen. Also, you don't always have to focus on what isn't working, also focus on what is working, and ask yourself:

What's going well, what's helping be better right now?

If you realise you benefit from hot desking, or pairing, then do that more, focus on the good.

It really was a brilliant talk.

Microservices: Packs small, plays BIG! - Stephan Hochdörfer

Before this talk, I had a vague understanding of Microservices, well at least the core concept, so after I feel as though I gained a lot of clarity. The talk itself was well delivered, but sadly lacking in actual examples or sadly experience when it came to questions. To be fair to Stephan, he had to field a fair few questions, and just sadly had a lack of experience. The questions mainly centred on having a shared data store, and how to keep state/speed through the different services. Clearly, Stephan knew his stuff, that was clear, just had a lack of hands-on experience with Microservices communicating together.

There was still a big case for using microservices in a legacy applications however, which was a great positive in the talk. Microservices can allow you to refactor a small piece of a legacy application, keeping the response/request the same, but isolating that services features as close as possible, keeping the size, well, micro. This allows you to do partial refactors, and the rest of the application isn't affected by the change, other than hopefully being a little faster for the optimisation.

Building a scalable system for tracking Shipping Packages - Premshree Pillai

Before this talk, I was more aware of Etsy for its shop rather than its tech, so when the show of hands at the start showed the majority were the opposite, I figured I better pay attention. It was really interesting to see all the usage stats for Etsy, and that it's backed by PHP. The talk was really well delivered and it made me really pay attention to the content. As we walked through the code, it seemed a lot of problems were coming from one thing, the queue.

Etsy's queue system is made with DB tables, and there were a number of tasks running to keep the numbers within these queues manageable. It seemed to me (I could be completely wrong here) but if RabbitMQ was used, then the DB tables could essentially be queues, and it would function in a similar way, but a lot of the queue logic could be removed in the app, making the core codebase cleaner. This is all theoretical of course, I have no way of knowing if it would in fact, make things better, I've just been learning a lot about RabbitMQ recently, it seems it would be ideal here.

Say What? Ubiquitous Language and You! - Beau D. Simensen

This talk gave a brilliant overview on Ubiquitous Language and was delivered by an equally brilliant speaker. It's easy to think that Ubiquitous Language just applies to the code, but it's outside of that too, anywhere where your feature is written, coded, spoken or diagrammed, Ubiquitous Language must be used.

Luckily for me and the project I'm working on, working out what the Ubiquitous Language is, isn't really an issue. I did however get a lot of tips on how to do this if it comes up, such as just trying to get the clients to decide on a word for clarity for yourself, when in fact they're deciding on the Ubiquitous Language on their own.

When the questions came, they were all answered brilliantly, which was really good to see. My only criticism of the talk was that there no proper examples on say, what the old name was, and what it became, but other than that, a brilliant talk, by a brilliant speaker, who even thanked me for leaving feedback.


Its safe to say the closing part of PHPBenelux was just as entertaining as the rest. The brilliant stage presence can't be ignored (Jeroen and Thijs, I'm looking at you.) and I do love a good blooper (Closing video kinda crashed, but it's on Vimeo now) but all in all it was brilliant. I didn't win any prizes this time, but I didn't mind so much, although whoever won the PS4 was more excited than everyone else put together. After the sponsors had been thanked, it was time for the closing show, closing magic show that is. Well, before the show kicked off, there was a few times that the curtains opened and closed, much to the amusement of the crowd, and me apparently.

I love a good magic show, so it was really cool for me, although I had no idea what the guy was saying, but I just watched everyone else turn their hands over and stuff, it looked fun!

After the magic show was over, we headed back to the main area for some food beer. The queues for food were rather long, so we ended up going through our drinks vouchers relatively quickly, and got thirsty for more beer. After another try on the punching machine (I nearly broke my hand again) and a brief chat, we headed to a nearby bar to grab a couple of beers.

The three of us ended up talking about ways we could use what we'd learned at the conference at home which turned out to be one of the great benefits I'd gotten out of the conference. After a lot of talking, and a few more beers, we headed back to the hotel via the very reliable (and late running, apparently) bus service.

We had an early start in the morning, so no hacking at the night time, straight to bed.


After we watched the closing Benelux video, we headed out for the train to head back to Brussels. It's still so weird to me that the day doesn't start till so late in Brussels, we got the train at a very empty Antwerp station, which again was very odd. The two floors of train tracks however, that was pretty cool.

If you are ever in Brussels and looking for a decent bar (with good WIFI) then check out The Big Game Brussels Sports Bar, its pretty cool.

I could fill this part with images, but I feel as though I've used enough already, but Brussels is beautiful place, and I'd love to come back. One bonus of it being so cold in Brussels, was that when I got back to Newcastle, it felt tropical, so walking round in a T-shirt was nice and refreshing, thanks, Brussels. Ok, maybe just one...

Sterling and Wardle

All in all

For me, this conference was amazing, from start to finish. I learned so many different lessons, and because of the inspiration this conference gave me, I'm doing a PHPNE talk on Neo4j, and I may be writing another book, so it's all very exciting! It's made me realise how much you can get out of conferences when you're both inside, and outside of the tracks, or even after the conferences itself.

I know now, I feel very inspired, and I think, that's all that really matters when it comes to it.

NOTE: I've supplied everyone I've mentioned in this post feedback on joind.in :)

Read full article or add comments

Load the 'Main menu' for Drupal 7 in code

28 Jan 2015

There comes a time when you need to load a menu directly into the code on a Drupal project, and there's a lot of guides to do this.

When I was looking around though, I couldn't find a single one on loading the actual 'Main menu' that Drupal creates, so after working out how to do it, I figured I'd share.

The main issue with it being created by the system module rather than the menu module, but either way, here's a Gist

Read full article or add comments

Date filtering in jQuery DataTables

28 Oct 2014

On a recent project, I had to add date filtering to a jQuery DataTable instance, which isn't as easy as I'd hoped. The documentation implies this is possible, but after looking it up, couldn't find anything helpful.

In this case, the data was supplied with an AJAX source (which was required given the amount of data), so instead of hooking into the column data and doing it on the front-end, I took advantage of preXhr.dt, which is used via the DataTable on method.

My DataTable object, ended up looking like this:

var to = $('#to');
var from = $('#from');
var table = $('#table')
    .on('preXhr.dt', function ( e, settings, data ) {
        data.from   = from.val();
        data.to     = to.val();
        "order": [[ 1, "desc" ]],
        "sPaginationType": "full_numbers",
        "bSort" : false,
        "bFilter": false,
        "bProcessing": true,
        "bServerSide": true,
        "bDeferRender": true,
        "sAjaxSource": "/data",
        "sDom": 'ltipr',
        "columns": [
            { "data": "name" },
            { "data": "date" },
            { "data": "postcode" }


This essentially takes the values from the to and from fields (jQuery date pickers) and passes them along with the other date, for every AJAX request. This means, you can check if these values exist, then filter on them accordingly before returning the table.

To get this all running, just add an onSelect callback to the datepicker, and you're all set

    dateFormat: "dd/mm/yy",
    onSelect : function(date, inst) {

This way you can use you own names for the form, style the filter however you want, and choose how to treat the data. This can of course be used with any other filter, I just happened to use a date range.

Read full article or add comments

Talking at PHPNE

21 Mar 2013

On Tuesday, the 16th of April, I gave a talk at PHP North East, titled "Silex: From nothing, to an API". This was my first real talk, so it was really nerve wracking for me. Initially, I planned not to be the guy who wrote his presentation the night before, but due to certain things, that turned out to be what happened.

This lack of planning and rehearsal time really came to be a real problem for me, as during my actual talk I rushed through my slides, and missed out some key points. The Friday following my talk, I was also involved in a workshop on how to give better presentations, which, I wish had of been the Friday before my talk, but never mind.

After the course, and listening to myself during the talk, I've realised a number of issues with it. The following are things that I either learned, or did incorrectly during my talk.

You can see the slides for the talk on slideshare and the source code on GitHub. Also, if you have any feedback on the talk, please let me know via Twitter (@chrisdkemper) or in the comments.

1. Don't make assumptions

This was my first real problem, as it lead to a few issues during the talk. My first assumption, was that I thought everybody in the room would know about Composer, which after the talk, I learned wasn't the case. I don't believe in explaining every part of a presentation, because this can be very boring to the majority of spectators, and makes for a dull presentation. I could have however, put a slide in explaining what Composer was and its benefits. Within this slide I could have also mentioned Composers ability to autoload a users own libraries, which I used within the presentation, but never explained.

To make life easier for myself during the testing part of the part, I'd written some tests using the Symfony Console Component but I then didn't fully explain this. I should have made a better point of mentioning that it wasn't part of Silex, and was a separate library. I also could have actually explained the benefits of this a lot more, as the library itself is awesome, and you should check it out.

2. Slow the fuck down

After the course, and listening to myself during the presentation, I know now that I was talking through my slides WAY too fast. This is a vicious cycle, because as you talk faster, you go through more slides, and then realise you don't have many slides left, which makes you more nervous, so you talk faster, etc, etc. With being nervous I missed out explaining some of the key parts of the talk. First of all, I should actually explained how Silex works with its routes. The first example I used, is the one mentioned in the documentation on the Silex website is quite simple to someone who knows Silex, but not for someone who is unfamiliar with it. Below is that code sample:

$app->get('/hello/{name}', function($name) use($app) {
    return 'Hello '.$app->escape($name);

Ideally, I should have mentioned that each route is added to the main application object, and that variables used in the url are passed through as arguments. You can also use the Request and Response objects as arguments too, if you require them within the route. Also, to make use of application helper functions and services, the application variable needs to passed into the route via use, otherwise it'll be unavailable within the route.

I also rushed through the usage of components within the application. I didn't elaborate very much on the use of DBAL within the talk. Although it was only a base usage, I could have still went into a little more detail about how it worked, but I blame my nerves.

3. Plan Plan Plan

My lack of preparation time kicked me in the face here. For one, I mentioned some things that weren't technically correct. These were mainly down to the use of Silex in larger applications. Silex as a framework is perfectly capable of handling larger applications, but the issue with it comes with managing the routes, as this can get quite messy unless it's managed properly. You can get around this a little by using Controller providers, which can make routes a lot more manageable for larger applications.

I also totally neglected to mention how easy it is to run tests within Silex, you can check that our here.


There were a few other improvements I could have made, but on the whole I'm still glad I gave the presentation. Although there were a lot of problems, I learned a lot from the experience, and, I know at least one person got something out of, which makes it all worth it! Hopefully I'll be able to do another talk in the future, and make a better job of this one.

Read full article or add comments

I love Kickstarter.

03 Nov 2012

Since finding out about Kickstater back in March, I've been in love with the idea of micro funding and what it's able to achieve. The first project I backed was Eqo Optics and after that I got the fever. Thus far, I've backed 9 projects although In some cases my lack of funds made me miss some great opportunities such as Elevation Dock or OUYA.

One of my favourite projects is Carmageddon which is the next instalment in the series. Due to some crazy licensing issues, Stainless games were unable to make a new version of the game, but now, they can! After being successfully funded, the project is now well underway, and the game is making great progress. I'm really looking forward to seeing one of my favourite games given an awesome facelift.

While using the site, I've never been in the position where one of the projects I've backed hasn't delivered. Don't get me wrong, I'm still waiting for a number of things, but those particular projects are either games (Castle Story, Planetary Annihilation or even Timber and Stone), or products such as Nifty Drive which are being well updated. They all have active development blogs, so you know what's happening on regular basis!

With Kickstarter now being available in the UK, it gives a huge amount of opportunity for cooler projects to back, and most likely, spend all of my money on.

Read full article or add comments

A new site, eventually

10 Jun 2012

Since my previous site, a placeholder page I built on the Megabus home from the .net awards in 2010 I've been saying I'll build a new one, and now, I finally have! Due to this being nearly 2 years coming, I've decided to just finally get something out there actually allows me to blog, and show any potential side projects I have going on (wait and see for that one). I was initially going to build the site in Drupal, then in Wordpress, then in PyroCMS. Although all of these systems would have been perfectly adiquete, I then suddenly realised, I know how to code, I don't need a CMS.

With that in mind, I then decided to go down the framework route, in the form of Silex. If you're looking to whack a quick prototype together, or a nice little site like this one, I'd definently give it a try. To go with this, I also made use of the TWIG capabilities of Silex, and decided to serve my content in the form TWIG templates for the main layout, and Markdown files for the actual content. Although this seems like a backwards way to work, the lack of a database means the site is shockinly fast, which is always a good thing. The disadvantage of this however, is when it comes to routing, as it all has to be done manually, but that comes down to an array with a filename and a slug, so once you have a couple in there it's easy enough to work with.

On the design side of things, you may have already worked out I've went with the Twitter bootstrap as a base. This allowed me to get the site up and running really quickly, and just skin it for my needs. I decided to get it from Github, so I could have access to the LESS files, allowing me to compress all the styles into one file, which helps with the super speedyness.

To cover the comments, I've decided to go with Disqus. I've always liked using this, mainly because of the ease, and that it takes care of the moderation and annoying aspects of dealing with comments, ala spam. That pretty much sums up the site, the rest of the aspects I just added in little bits at a time, and I'll no doubt change the design when I kick off a side project or two, but theres time for that yet.

If you have any thoughts on the setup or would like to offer some suggestions, I'd love to read about them in the comments.

Read full article or add comments

Foundation Version Control for Web Developers.

20 May 2012

Since my new site is finally up, it means I should finally write a post regarding the book written by myself, and Ian Oxley. Although it's been out for a number of months now, I still sometimes miss the whole writing experience, although it's one of the toughest things I've done to date. The start of the book went rather smoothly, but then I started falling behind, and the timescales started getting tighter, and tighter. I can safely say that some of these timescale issues were down to my poor management, because I always just thought "It can't be THAT hard.", well I can safely say, it is.

That's not to say the project wasn't rewarding, seeing your name in an ACTUAL BOOK is one of the best feelings ever, plus I was able to be the first member of family to have that honor, which is a great feeling. The main issues I had generally came down to planning, because in most cases I well and truly underestimated the amount of time, and effort that goes into writing, and the research, my god the research! Working in the web, I'm used to the whole, you-get-a-bug-then-fix-it thing, but of course with a printed book, that luxury isn't there. Although the publisher does help with some of these issues (by putting your chapters through various copy and technical reviews), you really have to make sure everything (humanly possible) is correct in there, by checking, and double checking everything.

With the book, especially in the CVS chapter, I kept having to get information from sites that were created back with dial up was king, and having to confirm the facts from these sites, using others that looked the same wasn't so easy. For the newer systems (Git, SVN and Mercurial), this process was a still a pain in the arse, because with Version Control, there are a lot of ways to perform certain actions, but some are a lot better than others. This meant doing A LOT of testing. I had a spare Macbook (Courtesy of Phil Sherry) and various Virtual Machine's to ensure I could test everything multiple times (and under multiple environments), to ensure it worked as intended.

This process, combined with the researched needed = lots of work. All of this effort went into all the practical chapters of the book that I wrote, so you can imagine how much I shat my pants when I realised the scale this went to, especially working with Mac, Windows and Ubuntu. Although there was a lot of work involved, I still like to think I'd have been a lot more comfortable if I'd planned more extensively at the start, and managed my time better.

With that in mind, being able to take breaks is a really hard thing to do while writing, at least it was for me anyway. Towards the end of the process, if I didn't work every possible moment, I wouldn't have finished, simple. When you're working 5 days a week and writing 7, it can really take it out of you, and I'm sure many of you freelancers out there will always have this issue. I had to allocate myself at least a half day off to recharge, otherwise the 7am to 2-3am days would end up devouring me and I'd be a zombie.

I've already mentioned the research that went into the book, which took up a lot of the time, and I'm sad to say that some of the research can have a somewhat negative effect on you while you're doing it. While writing the book, I learned and understood every command needed by someone getting started with Version Control, but as soon as I'd learned a command, it's place was filled by another, and the previous one was forgotten. Now I'm having to use my own book as a reference for some commands, which isn't really a bad thing, it proves it works.

All in all, I'd love to work on another book, the glory you get out of it hugely outweighs the work that goes into it. This time though, I'd be sure as hell to plan the fuck out of everything, and if anything, have more than enough material to write about, and know the time will allow for the schedule. Plus, I'd rather write about something I'd need to research less, so I can spend more time being creative with the content I knew, not making sure said content was actually correct.

If you haven't checked out the book yet (you should, it's awesome AND has a snake on the cover) then you can head over to Amazon and check it out there.

Read full article or add comments