Code, Compose, Bike, Brew

…though not necessarily in that order

Vagrant-roller Now Updated for Roller 5

| Comments

Last year I put together a little GitHub project called vagrant-roller which provisioned an Apache Roller VM with very little effort. The initial version of the project provisioned a Roller v4 VM but there were a couple of issues getting the latest version of Roller (v5) to work.

I have had a bit of spare time recently and managed to get everything working so you can now provision either v4 or v5 as you prefer. I have also re-written the provisioning mechanism to use Ansible as I find it to be a much more capable and productive tool than Puppet, which I was previously using.

Any questions etc welcome either on the vagrant-roller project itself or as comments here (see below).



Alpine 3552, 3353, 3354 Car Amplifier Manuals

| Comments

Waaaay back in 2005 I posted on a car audio forum asking if anyone had the manual for an Alpine 3553 amplifier. I had the amp but no manual and couldn’t figure out the power ratings and whether it was stable at 2 ohms. Unfortunately Alpine themselves didn’t seem to have it in their manual database.

Some kind soul sent me what they had of the 3553 manual along with the 3552 and 3554 manuals, from this I managed to figure out the information I needed. Every month or so I now get an email or two from people who happen upon my post asking me if I’ve still got the manuals, just goes to show how, after all these years, the 3553 is still alive and kicking!

So, for anyone who’s after these manuals here are the files as I received them:

Alpine 3552 Manual

Alpine 3553 Manual - Single Page only I’m afraid

Alpine 3554 Manual

Note: By posting these here I am not claiming any right of ownership of the files, which of course belong to Alpine.

@Alpine: If there’s a problem with me hosting these files please let me know and I’ll duly remove them (and please add them to your manual Database so people can get to them!).



Crossing the Line in to the Dark Side… Or More Aptly Put “I’ve Only Gone and Bought Myself a Shiny New Cyclo-Cross Bike!”

| Comments

For the last 4-5 years my trusty downhill/freeride/dirt-jump/trail centre/ hard-tail has been ferrying me back and forth from my places of work. Each day I cycle my 2 * 10 mile journey, trying (usually in vain) to keep up with the sensible folk on their fast road bikes. When I first started commuting on the hard-tail I got a bit of a kick out of the fact that it was so much fun riding a bike built for anything other than road-riding on the road. I could hop obstacles, manual over sleeping policemen and do massive stoppies in to the bike boxes at lights. Plus having a whopping 200mm disk on the front gave me bundles of confidence that I could stop in no time when bus or taxi drivers pull their seemingly obligatory crazy daily manoeuvres.

There’s always been one thing which I’ve found difficult though - getting good road speed. At first I didn’t really care as I was having so much fun, but over the years I guess my base level of fitness has improved and I’ve started trying to keep pace with the faster bikes on the road. This is when I realised that riding a heavy mountain bike with 2.4” dirt jump tyres, a chain device and lots of heavy components does not make for an easy time trying to break the london-commute-speed-record! And so over the years I’ve felt the gentle yet persistent tug from the dark side, that all mountain bikers fear… that’s right, I’ve started to want a road bike!

Ok, so I’m being dramatic, there is no “dark side”, I’m sure road bikes are ace, it’s just I’ve never ridden one before. Also given my limited distance of ~100 miles a week I wasn’t sure a full-on road bike was what I wanted (lots of roadies I know regularly do 100 miles in a day!).

So what then?

I’ve been hearing more and more about a discipline called Cyclo-cross recently and after chatting to a few mates who have some experience I decided it definitely sounded like something I should find out about. Cyclo-Cross is a mixture of on and off road riding on what is ostensibly a souped up road-bike (i.e. slightly different geometry, disk brakes (usually) and thin but treaded tyres for off-road). The folks who do it seem to be of fine fettle and essentially like throwing themselves down slippery trails on fairly inappropriate bikes (hang on I’m sensing a theme emriding tree roots on narrow tyres with drop bars seem like a good example here!). After watching a few YouTube entries my decision had been made - I needed a Cyclo-cross bike!

Fast forward through lots of internet research to last weekend when I picked up shiny new bike from BonVelo (who are lovely, friendly and generally awesome by the way), a Kinesis Crosslight Pro6… and it’s beauuuutiful!:

Alt text

Riding the thing

This Monday was my first commute on the Kinesis. I didn’t have much time to fettle over the weekend in preparation so I took a few tools in case I needed to make any adjustments en-route.

Things I thought would be scary:

  • SPDs: I was a bit nervous of riding SPDs as I’ve never used them before but after slightly slackening the cleats off from their default position I found that they were pretty easy to clip in and out of. On Monday I made sure to clip out uber early when approaching lights but on Tuesday I did a bit of trackstand practise and found that I could still trackstand easily enough on the new bike so as not to need to unclip at lights.

Things I didn’t think would be scary that are:

  • General balance: I’m used to riding my Easton MonkeyLites which are nice and wide, in contrast the bars on the Kinesis are so narrow and consequentially the bike feels massively unstable which makes me feel vulnerable to traffic.
  • Brakes don’t work very well (yet): Again being used to Avid Elixirs with a 200m disc my mechanical 160mm bb7’s feel somewhat lacking by comparison. They seem so be getting more grippy as they bed in though so should be easy enough to get used to.
  • Trying to stand up and pedal hard and nearly catapulting myself diagonally over the bars. This is getting easier each day as I get use to the bike but I think I could benefit from improving my core + upper body strength.
  • Cornering on those tiny little tyres: The road/tyre contact patch is literally tiny! Definitely an opportunity to improve my cornering skills!
  • General riding position: It’s mental, I’m hunched over like Quasimodo!
  • How in the name of all things sane am I supposed to ride this thing offroad?! Actually I’m quite looking forward to figuring this out so am going to try out for the London Cyclo-Cross Summer Series which looks like a noob friendly way of getting some off-road practise done just down the road in Herne Hill.

Things that are ace:

  • It is SO fast!
  • It it SO light!
  • Bunny Hops really easily

What next?

I’m enjoying riding the Kinesis more and more every day, so I think next steps are just to continue to get more familiar with the bike and then see if I can get some of that all important road speed I was after. Actually I can see that happening already, in the last few days I have started to consistently take 3 minutes out of my 35 minute to-work journey and 5 minutes off my 38 minute return journey. Something must be going right there!

I’m also really looking forwards to riding the bike offroad at the summer-series, that’s going to be quite a different kettle of fish to riding downhill I bet!

Looking for a Devops Engineer/ Release Manager to Join Us on the BBC Digital Archive Project

| Comments

We’re looking for the new member to join the devops team of the BBC’s digital archive project, the role is a split of soft and technical skills and is essentially a “devops engineer/ release manager” position. Experience has taught me that devops is a notoriously difficult thing to recruit for so I’m widening my search by posting here as well as using all the usual routes.

What follows is a summary of the characteristics that I’m looking for, I’m not expecting to find someone who fits all of these but hopefully they should give you a good insight in to what I’m after.

So then here’s what I think you might be like…


You may have worked as a full time developer in the past (you may still do so). You are probably somewhat of a programming polyglot and are definitely well versed in Java applications and their various containers (Tomcat, Jetty etc). You probably understand design patterns and have a passion for TDD and use this knowledge wherever you can when working on devops problems. If you have worked with Java in the past then you’re probably more interested in Spring, Groovy and Grails than J2EE and other ‘enterprisey’ things which are inherently difficult to use TDD techniques against.

You are well versed in several scripting languages, notably Ruby, Bash and Perl

You don’t like doing things by hand more than once or twice, you know what inconsistencies this can cause and prefer to automate using tools like Puppet, Chef, Ansible and Capistrano.

You hate technical debt with a passion, but rather than seeing it as an annoyance which you don’t enjoy fixing you relish the challenge of working it off, improving things, reducing build times, making deployments more robust and reliable.

You have a dislike for proprietary software and have a love of open source. You have a broad working knowledge of many reliable and popular open source projects. You also know when to avoid certain projects because they’re too immature or could lead to a support nightmare due to lack of community.

You like tools like Vagrant and love the fact that you can use Vagrant’s provisioners to test changes locally before deploying to development environments (which will inevitably break if you can’t test changes locally first).

You have a website/ blog which you set up as a technical experiment which may or not receive as much love as you know it should. You may spend some of your personal time learning and playing with new tech. You may have a github account and may have contributed to one or more open source projects.

You are a dab hand with source code control systems, you’ve definitely used Subversion and have probably used Git. You’ve taken the time to read the relevant documents and are competent at branching and merging in both.

You understand SSH to the extent that you can set up SSH config and SSH agents. You know how to use private and public keys.

You have high development standards and hold your self to these. You take pride in your work, you plan it, you don’t just hack your way there (Although you’ve probably done a lot of hacking about in your time, but you know when to hack and when not to).

You may use a Mac or Linux operating system, hey you might even run Windows, and you take your Laptop everywhere with you. Given the choice you would rather use your own laptop than a boring sanitised enterprise desktop machine.

Personally (Soft Skills):

You are an organised person and are used to context switching between tech and non tech work. You are probably an outgoing person and enjoy working collaboratively, you enjoy pulling together the various pieces of the release and deployment puzzle and getting everything prepped on time for releases. You accept that releases sometimes contain more manual steps than you’d like but have a desire to move towards a continuous deployment model (and the skills to help get there).

You enjoy working in a fast paced environment or one where it sometimes feels like you need to wade through a little treacle in order to get where you want to be, because you know the feeling of getting there will be worth it in the end.

You favour agile methodologies (Scrum, Kanban etc) over traditional ones (Waterfall, Prince2 etc). Your preference is derived from experience of working in a successful agile team.

Boring stuff:

You are available for interview as soon as possible (ideally in the next couple of weeks). If all goes well and we agree that you will join us you will be available to start work on site at the BBC’s White City campus in London within 1 - 4 weeks of offer. The role is intended to be a contract role however there might be an opportunity for it to be a permy role for those interested.

If much of the above sounds like you and you’re interested in discussing the role further I would love to hear from you, so please drop me a line at edd-AT-eddgrant-DOT-com



Introducing Vagrant-roller

| Comments

I have been working on a little project recently to enable me to spin up a fully configured and installed Apache roller system in a matter of minutes. The project has taken me a couple of evenings so far but is now in a position where it’s worth sharing.

Introducing vagrant-roller

What is it?

Very simple - it’s a Vagrant project which uses a Puppet provisioner to:

Why did I create this?

  • To provide a quick and easy means to test drive Roller - this will make testing migrations between versions easier and more predictable.
  • To provide a convenient and sandboxed way to author and test Roller themes - until now I have had only a single Roller install (this site), so it’s useful to be able to have more freedom in what I can easily change, knowing that I can simply blow away the changes and start again should I need to.
  • To provide some Puppet code with which a Roller install may be automated. I figured it’s time to practise what I preach professionally. ‘Work of art’ environments (i.e. hand crafted, unreproducible and each one slightly different to the last) are the last thing that any self-respecting devops or software engineer wants. Although I set this site up many years ago as an experiment it’s about time that I made it easily and autonomously reproducible for that ‘not if but when’ moment.

Installing and configuring Roller isn’t particularly difficult but it can be somewhat time consuming and fiddly, particularly to Roller newcomers or those unfamiliar with the technology. I hope that vagrant-roller is useful to people who want to play with Roller without wanting to go through the set-up steps themselves.

Go-on dive in

So if you’re interested in Roller, why not have a play with vagrant-roller, the project is very much in its infancy right now (only 2 evenings old!) but it works well enough to be useful already so is worth sharing.

I welcome any feedback, bugs, feature requests, pull requests etc that people have, just raise them on the issue tracker.



Our First Family Christmas

| Comments

Work has been crazy busy recently, so it seemed like a good time to re-charge and take a break. I agreed with my client that I’d take 2 weeks off over Christmas and was looking forward to this break for a number of reasons. It was our first Christmas together as a family, we’ve finally bought a new Car which is big enough for the four of us and all our assorted baby paraphernalia to allow us to go away for more than a single day and I was looking forward to relaxing with Tash and the babies. We had also planned to make quite a few changes to the babies routine in order to try and get them sleeping more solidly through the night.

It has been lovely spending so much time with the babies, seeing with them round the clock I noticed how visible their day-to-day development is. Both Luca and Finn have started to chatter and babble and are so funny to listen to. Luca has also figured out how to roll from front to back, although can’t yet do it consistently. And Finn has found a love for the Jumperoo and goes quite mad when he gets in it!

Going home was a mission, I don’t think either Tash or I could really believe how much stuff two babies need just to go away for a few days. Fortunately the new car had just about enough room for everything we needed. It was great catching up with family though and we really appreciated everyone’s willingness to muck in and help with baby feeding and entertaining. Tash’s brother Ben has been living in Cambodia recently and came back for Christmas, he hadn’t met the twins yet so it was great for them to get to meet their other Uncle. We were also lucky enough to catch up with Phil Cox and Ben Knighton and it was great for the littluns to meet them too.

When we got back home we instigated quite a few changes to the twins’ bedtime routine. We moved them from our room in to the nursery, stopped swaddling them and started trying to reduce their reliance on dummies at night. The net result of these changes was several nights with awful sleep and a few more where I ended up sleeping on the nursery room floor in a sleeping bag as it seemed easier than traipsing down the hall every 5 minutes to settle them… Things didn’t really improve from there and we have now regressed somewhat. They’re now back in our room and Finn is back in his swaddle. We are however making progress as they’re starting to sleep a little more reliably and we’re having much more luck at not using dummies… One step forward two steps back I suppose!

I’ve had a great break, but it has been exhausting. I don’t think either of us anticipated how much the travel and exposure to so many new places and faces would exhaust the twins. They both got really knackered as a result and their sleep was worse than usual. Having said that it felt really freeing to be able to leave London for more than a day and the new car is ace - so glad I finally found what I was after!

I went back to work this Monday, I was so tired that I felt like I was on another planet while I was bumbling around the flat getting ready. Fortunately the morning cycle and a few cups of strong Tea sorted me right out! Having a break has clearly done me good as I’m feeling really focussed on getting the team to address some of our more debilitating technical debt items so we can take then build the next sections of our deployment pipeline. Exciting stuff ahead!


I’m Growing a Mo for Movember

| Comments

Cancer sucks! So, in an effort to make it suck for fewer people in the future I’m joining the ‘BBC men of fabric’ team in raising money for Prostate Cancer UK and the Institute of Cancer Research.

Please consider sponsoring me/ us with any pennies you can spare. You can donate and checkout the Mo progress on my Movember page:


Welcome Finlay and Luca

| Comments

I have already posted this on FaceBook and Twitter and told family and friends, nonetheless I want to mark the occasion here on my blog:

On Monday the 23rd July 2012 my girlfriend of some 10 years Tash gave birth to our twins, and our daughter Luca and son Finlay were born at 04:51 and 04:53 respectively.

Our hospital was Kings in London, England (for the benefit of any international readers). Tash and I had made a birthing plan which included using a birthing pool for pain relief and delivering the twins naturally unless there was a medical reason not to at any point. Unfortunately during the later stages of labour Finn’s heart rate became elevated and didn’t return to normal after a period of monitoring, so our best made plans somewhat went out of the window as an emergency c-section suddenly became our only option to ensure safe delivery of the twins. Tash was an absolute soldier and the staff at Kings mostly did a fantastic job, apart from the moment when they left me waiting alone outside theatre without first having told me what the plan was (i.e. that someone was getting me some scrubs and I would be able to enter theatre shortly to support Tash). Our midwife Jean from the Paxton Group Practice was an absolute hero in providing fantastic continuity of care to Tash, before, during and after the labour. Jean’s colleagues Jackie, Emma and Veronica have also provided fantastic post natal support and advice for which we are incredibly grateful.

We ended up staying in the post-natal ward for a few days before being discharged, Little Finn had some blood sugar issues at birth and had to spend a couple of days in the special care ward (SCBU), however he was quickly put right and was discharged from SCBU so he could rejoin his sister and us in the post-natal ward. Tash has coped with everything brilliantly and is recovering really well from her c-section, she was up and moving around the day after the birth which is testament both to her courage and the advances in c-section techniques.

One thing I will not miss was sleeping on the hospital floor for the 4 or 5 nights we were at the hospital, that combined with the lack of sleep, canteen food and the constant activity of the staff coming in and out made it a pretty tough few days in terms of keeping our heads together whilst we were adapting to being new parents, so we were pleased when we were told that everything was in order for us to be discharged and to go home and start our new family life together.

As I’m writing this we have now been home for 2 weeks, Tash and I are absolutely knackered but despite the lack of sleep we are loving every moment of getting to know the twins. They don’t do much other than eat and sleep at the moment but already their individual personalities are so apparent and we’re loving getting to know them whilst we learn the parenting ropes. I have been really fortunate that my current client has agreed to me taking 3 weeks leave from the project, this has been an invaluable time and I am feeling both sad and yet also super excited to be returning to work this coming Monday.

So without further ado I would like to welcome Finlay and Luca to the world and our family, here’s to many many happy years together!

Installing Puppet in Ubuntu (12.04) From Puppet Labs’ APT Repos

| Comments

The following provides instructions on how to install a particular version of Puppet from Puppet Labs’ own APT repos, this is particularly useful if you run different O/S versions across your puppet nodes or simply don’t want to use the versions bundled with your particular Ubuntu distro.

This will cover puppet rather than puppetmaster but the basic installation principles are the same for both, it’s simply the configuration which is different between the two.

I’m writing this mostly as an aide-mémoire to myself as it’s one of those things that I do infrequently enough that I’m always forgetting the precise steps.

# First of all ensure that you have uninstalled any existing puppet installation
sudo apt-get --purge remove puppet
sudo rm -fr /etc/puppet

# Install the Puppetlabs GPG key.
apt-key adv --recv-key --keyserver 4BD6EC30

# Add the Puppetlabs APT repository to our APT sources
# Note the deliberate carriage return, this is important
# for the '' file to be correctly formatted.
sudo sh -c 'echo "deb natty main
deb-src natty main" > /etc/apt/sources.list.d/'

# Install the puppet-common package.
# Shouldn't strictly have to do this as it should be a dependency
# of puppet package but seems to be something wrong witg
# the dependency setup so have to do this manually for 2.7.17 at least.
sudo apt-get install puppet-common=2.7.17-1puppetlabs1
# Install puppet package.
sudo apt-get install puppet=2.7.17-1puppetlabs1

That’s it, now just configure puppet as you would do usually (e.g. /etc/puppet/puppet.conf and /etc/default/puppet), register your client’s cert with your puppetmaster and you’re good to go!

Introducing PICO

| Comments

Back when I was a student I used to run a home server to provide various services for my housemates and I, the ‘server’ was an old desktop I had spare at the time and sat in a cupboard running 24x7x365, well that was the plan anyway… Everything ran fine for 4 or 5 months before it started to behave very strangely indeed, I spent many hours diagnosing some pretty weird and often unreproducible issues and in doing so learnt that normal desktop hardware is not intended for 24x7x365 usage, particularly cheap power supplies and hard disks of which I went through several of each during this short period.

When it was time to pay the electricity bill we also discovered that standard desktop PC’s consume an astonishing amount of electricity and therefore cost lots to run 24x7x365, this wasn’t a very welcome surprise for a bunch of skint students!

Eventually I grew bored of replacing el cheapo disks and budget power supplies and retired the home server, I moved a few of the services ( etc) over to a linux VPS. The VPS was fine for modest resources, but for the price I was able to pay was very constrained both in terms of disk space (~ 5GB), RAM (~316MB!) and firewall configuration (default ports only unless I doubled my monthly spend). So whilst the VPS was able to run it wasn’t able to take on a lot of duties that the old server took care of (backups, file serving etc).

After a while I started looking around for some suitable hardware to build a new home server on, I have somewhat of a fascination (err… obsession?) with electrical efficiency and saving the amount of electricity used at home so I wanted to build something which fitted the following requirements:

  1. Extremely low power consumption: <= 10 watts under load (or as close as possible).
  2. Robust enough for 24x7x364 operation.
  3. Near silent operation.
  4. Capable of taking on routing and modem duties i.e. replace my modem/ router to further reduce electrical usage at home.

The Contenders:

There seem to be quite a few devices in the low power arena, each with it’s own pros and cons. Certain things that one would take for granted with a desktop/ server grade machine, such as having a wealth of expansion slots or input/ output controllers becomes less common with lower power devices, the result being that you really need to plan carefully in order to be sure that the device can provide the required interfaces for the task at hand. Having said that I was impressed that there are several really capable low power devices which provide a reasonable range of connectivity/ expansion.

I looked at the following devices:

Soekris NET5501, CompuLab fit-PC2(i), Netgear ReadyNAS

The NET5501, is based on a single core 500 MHz AMD Geode CPU and comes with up to 512MB RAM. It has 4 10/100 Mbit ethernet ports and a SATA 1.0 controller. It is incredibly power efficient drawing about 7 watts under load. It is intended for industrial application and so is built robustly, it also has 1 x PCI and 1 x MiniPCI slot so could take on routing and modem duties with the appropriate card. The presence of the PCI slots makes this device incredibly flexible in terms of it’s configuration. However one frustrating thing about the NET5501 is the small amount of RAM, being limited to 512MB, is really a deal breaker for me. Also there is a distinct lack of any documentation for the 5501 which concerns me (the only available documentation refers to the 5501’s predecessor, the NET4801).

The fit-PC2(i) is based on a single core 2GHz Intel Atom Z550 CPU and comes with 2GM RAM. It has 2 10/100/1000 Mbit ethernet port and a SATA controller and an internal 9.5mm SATA bay for an onboard HDD. It draws 8 watts under full load (excluding HDD) and, whilst not quite as robust as the soekris is built sturdily for continual use. The fit-PC2(i) also has a build in SD card slot and onboard sound and graphics which, while not required for a headless server hugely simplifies initial O/S installation. It also has onboard 802.11n WLAN and 4 USB 2.0 ports for further expandability.

The Netgear ReadyNAS is an altogether different beast but is worth looking at, it comes in a range of different guises but is generally more aimed at providing super configurable storage than being a low power linux server. It can however be modded to the extent that you can consider it a normal linux server, however it suffers from slow CPU and lack of RAM. It also has a relatively high power consumption of around 20 watts (excluding disks) although it does have a clever timer function which can power it down based on a user defined schedule, thus reducing total power consumption.

Re-evaluating my priorities.

I initially prioritised having a device which could replace my router/modem, the most likely candidate for this would be to obtain a PCI ADSL modem card and a MiniPCI wireless access point card. From the devices I found available the only one which had the available expansion for this was the Soekris, costing up the options looked prohibitively expensive, furthermore, moving routing/ modem to a single box would also create a single point of failure in terms of internet access from home, which could be an almighty pain if the box went down unexpectedly. With this in mind I decided to remove this requirement and leave my existing router in place for the time being.

In order to be able to run several services on the device I was concerned that I was going to need a reasonable amount of RAM (reasonable being >= 1GB in my estimation). The Soekris does not allow increasing of RAM from it’s 512MB stock, unless you want to get handy with a soldering iron, this was a limitation too far for me so the Soekris was eliminated from the runnings. It appears to be possible to increase the RAM in the ReadyNas but I felt that the power consumption of the device was too high for me to be willing to run it 24x7x365 which essentially ruled it out. This leaves us looking at the FIT PC, it comes loaded with 2GB of RAM, draws an absolutely tiny amount of electricity and has reasonably good explansion options, albeit based more around USB devices than PCI/ MiniPCI. It is also the only device which has onboard graphics which makes installation and initial configuration dead easy compared to the “fun and games setting baud rates with a serial cable” required to get a Soekris up and running. The only area that the FIT PC doesn’t do so well is when compared to the native RAID and multiple disk capability of the NetGear, however having multiple disks creates an issue of power consumption so this is something I’m wiling to work around, perhaps with some more creative/ robust backup strategies. So that was it, decision made, time to order a fit-PC2(i).

Introducing Pico:

The FIT PC arrived in no time, I’ve named it PICO after it’s PICO-ITX architecture and the fact that it’s absolutely tiny!

This is PICO:

So what am I going to do with it?

Well, I want to squeeze every last CPU cycle out of it, so I plan to run as many services as feasably possible whilst ensuring that each of the services provides an adequate response/ user experience. My initial ideas being:

  • SqueezeServer

  • Jenkins Server for my personal projects

  • Master backup server

  • LDAP Schema master

  • Music/ Video fileshare

  • svn repo

  • MythTv master backend running MythWeb

  • Puppet master server

  • ssh/ sftp server and point of entry to home network

  • OpenVPN

I think that’s a reasonable list to start off with. I think it could be quite an interesting project to see how it copes with the running of each of the above so will probably blog further entries as I get each bit setup.