Creating a Merkle Tree in the shell

I have known about and used Merkle Trees for a while, but never really bothered to construct one manually (no real need as so many good libraries are out there). Well it’s Saturday night, we are in a lock down, so why not?

For anyone new to Merkle tree’s, they are a binary tree of hashed values concatenated together (one-way hash functions) until an eventual root hash is achieved. The root hash can then be used a a master key of the entire tree. The root hash provides a point of non repudiation of the entirety of the tree. Merkle trees are currently utilised in three well known applications

  • Blockchains (verify transactions)
  • Bitorrent (verify file parts)
  • Git (bind code revision)

The tree starts at the base with a set of “Data segments”. In a blockchain this would be the transaction. In bitorrent, it would be a file part.

Lets build the tree using concatenation and hashing (sha256)


# Hash the data segments into lead nodes
leafnodes=(HA HB HC HD HE HF HG HH)

for i in "${leafnodes[@]}"
   hash=$(echo -n $i | openssl sha256 | awk '{print $2}')
   eval $i=$hash

# Construct the parent nodes
HAB=$(echo -n ${HA}${HB} | openssl sha256 | awk '{print $2}')
HCD=$(echo -n ${HC}${HD} | openssl sha256 | awk '{print $2}')

HEF=$(echo -n ${HE}${HF} | openssl sha256 | awk '{print $2}')
HGH=$(echo -n ${HG}${HH} | openssl sha256 | awk '{print $2}')

HABCD=$(echo -n ${HAB}${HCD} | openssl sha256 | awk '{print $2}')
HEFGH=$(echo -n ${HEF}${HGH} | openssl sha256 | awk '{print $2}')

# Compute the Merkle Tree Root
HABCDEFGH=$(echo -n ${HABCD}${HEFGH} | openssl sha256 | awk '{print $2}')

# Get the values we need for verification (these would typically download per need by a eneity needing to verify a segment))
echo "HC: ${HC}"
echo "HAB: ${HAB}"
echo "HEFGH: ${HEFGH}"


The result of this script will be the merkle root (HABCDEFGH) and we also spit out some other hashes will we need for verifying later on.

HC: 616e8cc2cc762815bce92ba8e817da87e92c98b3e3e5c42697caaa76e18c6129
HAB: 545f638df3d2ba4d2295cd1cf6506c05b8340afd5a014f704c741245aab86831
HEFGH: 6d109b1eb6c0ae1353ce98977f15091d2e5d28664f24f362e697da8fc13a6617
HABCDEFGH: fe65b452f05c006bee04415be7a53030dbcb16040bfd1eb19b3b02f95b4d44d7 

Verify a single Data Segment

Let’s say we now want to verify data segment “HD“. instead of requiring every data segment, we only need the leafs of “HEFGH”, “HAB” and “HC” and the root HABCDEFGH

Lets start by grabbing HD the segment we wish to verify

HD=$(echo -n HD | openssl sha256 | awk '{print $2}') ; echo $HD

We can now concat and hash HC | HD to get HCD

HCD=$echo -n ${HC}${HD} | openssl sha256 | awk '{print $2}')

Concat and hash HAD to HAB to get HABCD

HABCD=$(echo -n ${HAB}${HCD} | openssl sha256 | awk '{print $2}'); echo $HABCD

Concat and hash HABCD to HEFGH

HABCDEFGH=$(echo -n ${HABCD}${HEFGH} | openssl sha256 | awk '{print $2}'); echo $HABCDEFGH

And there we have our root and have verified HD. We were able to verify a data segment from hashing the object we want verified, by having only three hashes from the tree and the root hash (“HEFGH”, “HAB”, “HC”, “HABCDEFGH“)

Montane Spine Challenger 2020

Warning: Contains strong language

This was without question my “A Race”. I had been driving towards this event for several years, slowly building up distance, terrain and race experience.

Going into the event, I really had no idea how things would transpire, so I went in open minded. That seems to have turned out to have been the best strategy.

Leading up to the Spine and first DNF

In August 2019 I toed the line of the North Downs Way 100 for my first taste of running one hundred miles. The NDW 100 for me, was essentially a tune up race, but one that I took seriously (or at least I thought at the time). I trained hard, had some big mileage weeks and lots of back to back runs leading up the event. So I was in good shape physically and looked forward to the race itself. Up to that point the furthest I had run was 54 mile ultra (Montane Cheviot Goat). I soon learned that 100 miles is vastly more than double the distance.

For the NDW 100 I followed a strategy of starting conservatively, and trying to spread energy / fatigue over the entire 100 miles, my mantra was ‘bank energy, not time’. However things did not go to plan (they rarely do it seems).

I made several mistakes during the North Downs Way and discovered I had one big flaw in my perception that needed to be fixed. I am going to use this post to unwrap those mistakes and dissect them for what they were.

The first mistake was to nurse another runner.

I “buddied up” with someone for the night section. Looking back now having just spent entire nights on my own on the pennine ways desolate winter moors, it was a tad over the top for an event that is run over summer trails of South East of England. My night buddy started to feel sick around 60 miles, this slowed us down a lot and at a time I felt capable of giving a lot more. Said buddy eventually vomited and we picked up the pace again. However a fair amount of time was lost through his nausea spell , especially when added to my conservative starting strategy.

Next it was my turn to hit a rough spot around 70 miles, but the difference this time was that my night buddy elected to bugger off and leave me at the checkpoint, as soon as he caught on I was struggling and it might impact his race.

Lesson one

Its your race. Be polite, say hello / hi / how you doing? However if someone is not in any real danger and they are compromising your race, drop em!

I managed to yank myself out of the 70 mile checkpoint and decided to continue and try to reboot at Detling where I made my second mistake. Detling is a village hall at 82 miles where they serve hot food and somewhere to rest up. I heard so much about race volunteers with Centurion running. The story was that they “had been there” and were adept at turning you around with some tough love, hot food and sending you on your way again.

I made it to Detling with six or so hours left to do the final push of just under a marathon distance to the finish, plenty of time really. On paper it was achievable, and nothing was really wrong with me apart from fatigue and the sort of pain that comes with running that far. I figured if I could just get to Detling, the folks there might help me turn the race around. A volunteer met me outside the hall as I came down the steps that cross the road. His first words were ‘ going to continue, or are you done.?‘ It was kind of reminiscent of the TV series ‘Who Dares Wins’ where the contestant hands in their black armband.

I replied I was done to the volunteer, who in hindsight I expect was mainly there to get a free ticket to the next race. A bit of me muttered internally “what are you doing?”, while the other side said ‘just give up!’. I was asked for my race number , safety pins and then sat around waiting for the van of shame to shuttle me to the finish. I said to myself in that van that I was never putting myself into that position again. Never again.

The ironic thing was that, physically I was not that bad. I have been in worse shape after a very hard training weekend. My mind had however shown that it needed a lot of sharpening if I was ever to come back and complete a 100 mile race again.

Lesson Two

Don’t put your race into the hands of others. They can let you down and even though some are well meaning / salt of the earth types, some don’t honestly care wether you finish or not. You don’t really matter that much to them.

The DNF Aftermath

My confidence was really not that great after this DNF. I was now pondering how would deal with a self supporting winter mountain ultra that would be twice the challenge, when considering i just quit out on a summers race though suburban Surrey / Kent with aid stations situated every few miles adorned with treats and support.

Dissecting the race, there were the aforementioned lessons learned, however there was also a big flaw in my thinking. Here’s the thing with 100 mile races. They hurt, you often hurt all over. You get very tired, at times very down, and as said, you hurt and ache, quite often all over. In a lot of ways, I knew that I would hurt, but I had not really accepted that deep down and when it came, I honestly… resented it. I envisioned myself feeling great the whole time, which was setting myself up with false expectations.

Now a marathon hurts, the last 6 miles can be a real grimace. A 50k, get it even more, especially considering its often going to include some steep climbs. A 50 miler is even more of a challenge, most folks will end up on their feet for 12+ hours on a 50 miler. 100 miles though is a whole different ball game. It’s far more than 2 x 50 miles. The pain and fatigue levels are almost logarithmic, as in they ramp up once you get past about 60 miles. You also have to deal with sleep deprivation, which on the surface does not sound to bad, but honestly – it messes with your head. Its very hard to think rationally when your tired, when you want to quit and don’t think you have it in your to continue. If you’re doing ultras for the likes and comments claiming how tough you are on facebook afterwards, it won’t be enough to get you to the end. You need a deep down drive to get to the end and keep moving forward when your body is crying out for you to stop.

The big flaw

100 mile races are a different beast entirely. You may think you’re tough and can handle a lot, but if you don’t have a deep conviction about why you’re doing it, you will likely fail.

Breaking the Spine

I managed to get to Edale in one piece. This was the first challenge complete. Leading up the race I had been hoovering up any colds or bugs within a 50 meter radius. I had one puking bug and then one head cold bug, just two weeks before the race. I had been militantly washing hands and avoiding public places, but they still landed on me. One Friday evening two weeks out before the race, my six year old said something about wanting to tell me a secret (some nonsense about Unicorns most likely). She leaned in close to my face cupping a hand towards my ear, just as she was about to let me in on the gossip, she let rip and sneezed snot and saliva directly into my eyeballs. Later that evening, I felt the tingles in my nose and knew it was in the post. If anything though, this made me extra vigilant. I had time to get it out of my system before the race and I stepped up my hygiene to a level that would have left a heart surgeon feel he was slacking. I travelled to Edale on the train, equipped with surgical gloves, a buff to cover my face and anti bacterial hand gel.

I stayed in the YHA in Edale, in a shared bunk room with one guy doing the Challenger and four guys doing the full Spine. I spoke to the lad doing the Challenger and found out he had never ran an ultra before, but had done a 30 mile + long run he told me. I thought to myself under my friendly social mask – ‘He’s f***ed’, the race results show I was right. I have no idea how he got accepted into the race as they do vet runners for experience, perhaps he lied. I don’t know.

8am and 120 runners congregated on the start line. I noticed right away that I had made my first mistake. I had uploaded some funky high res mapping onto my Garmin GPSMAPS 64s unit and had somehow managed to delete the lot. All I had now was a blue line to follow.

Not a great deal to say about the start of the race, apart from I went completely by feel, rather then the tentative , airing on the side of caution persona I had at the North Downs Way. I hung out in the front section of the race teetering around position 25 to 30. This continued for quite a while until I had slip on the flag stones coming away from Snake Pass (I think it was). I came down on my left knee cap. At first I was worried it might be a race ending accident, but in the end it sort of shook off. I came off the gas though, and let it play out over the next 5 miles to see how bad it was. In the end much more important matters came to surface, that made me forget about my knee entirely….

I reached the Standedge Tunnel / Manchester Road Mountain Rescue check point at the car park around 4pm approximately. I felt good and my knee was holding up very well. I knew night was coming on, so I threw off my pack to grab my head torch. I normally always put on an extra layer before night falls, but I decided against it which was a dumb mistake. The weather seemed remarkably mild and the long sleeve arc’teryx base layer and Montane GoreTex were holding up well, so I decided to press on.

Night fell and with it came a storm. Westerly winds came in with quite some force and a lot of what you could describe as torrential rain hit me side on. I looked down at my Jacket and it was shining with saturation. I could feel the wind taking its toll on my eyes, so I pulled down my goggles. Visibility became very poor and I just about managed to keep to the path stumbling along, although at times I lost it and had to pull out my GPS to get back on route. I like using a map and compass, but they were near on useless at this point, as the fog and rain meant you could not get a bearing off anything.

After 30 minutes or so of these conditions, the cold started to really bite and I knew things were getting dicey. It was now to cold to stop and try and put layers on and there was zero cover around to do so. My teeth were now chattering at this point and the 1-2 minutes needed to stop and and add layers could well result in me hitting dangerous levels of hypothermia. My only option was to keep driving forward, as the momentum would at least generate some body heat and eventually get me off the exposed bit of moorland. I remember looking down at the blue line on my GPS and thinking ‘if I dropped this or it died I would be absolutely f**ked’. It become may lifeline and beacon to safety.

Things continued this way with my body gradually get colder and the shaking and shuddering escalating. Is was at this point that I went what I refer to as ‘feral’. This consisted of me manically repeating the same thing over and over ‘keep moving, keep moving, keep moving, keep moving‘ while stomping ahead through the wind and the rain. I had the idea that calories might help with body heat generation, so I actually emptied two entire packets of Clif Bloks into my mouth and gobbled them down in seconds, like a kid eating an entire jelly in one go. I must make a confession here, I might have littered in my somewhat delirium.

At last a sight for sore eyes came into view… I made out some vehicle lights in the distance, and realised there was a road crossing with a lone mountain rescue vehicle stationed there. “Thank f**k for that” I said out loud. When I got to the vehicle I found another runner there sitting on the back of the SUV putting on some warmer layers. It was Jen Scotney, she had taken a fall and looked like she had broke her nose. We agreed to team up as the Wind was still coming in strong and showed no sign of letting up.

For anyone thinking I might have over dramatised the previous few paragraphs – this weather influx caused almost half the field to DNF, many of them with hypothermia, including a lot of the elite runners leading the race. Here’s the thing with hill weather, a lot of people think freezing cold / snow is more treacherous. However cold conditions combined with driving rain and strong winds is far more lethal. With snow / frost etc, the variable remains fairly static and easy to manage, you wear lots of layers. However when you get wet, and by that I mean drenched through and a cold wind keeps driving into you, it gets very hard to warm yourself up again and you have very little time and space to make changes within. Your temperature drops and the resulting less body heat, means the temperature of your wet layers reduces as well. Its a bit of spiral downwards.

After this me and Jen made it to Hebden Bridge the only check point half way, she made a quick stop and moved on. While I ate a hot meal and spent a bit of time on my kit. I decided for the 2nd half I would put on my more robust Mountain Equipment Lhotse Hard Shell. A more weighted jacket not really designed for running, but I knew it would be likely the race would play out from here as less running and more fast hike. For good measure I put on a permaloft jacket underneath the hard shell and changed my gloves to the thick fake fur lined Montane Maximus mitts, with some hand warmers thrown in. The other change I made was changing my Altra Lone Peaks for King MT’s, which I wish I had not done, as the King MT’s decimated my big toes and are horrible shoes for long distance stuff.

From here it was a case of driving it home. Here is where I really noticed a difference in the runner I was on the North Downs Way 100 and as I found myself now on the Spine. My head was 100% in this race and loving it. I was absolutely sure I would finish no matter what and the only thing that would stop me, well, would be someone else telling me I can’t continue. Before the race had started I had envisioned sitting at the finish having DNF’ed. I saw and felt what it would to wallow in my own self pity for hours on end, while others come in elated at having completed the event. That vision of sitting there and my adamant position on finishing the race no matter what, changed everything. I was getting to end, come hell or high water, so there is no point moaning about anything, “seriously, give it up, you won’t be getting your way“. Towards the last 20 or so miles of the race, I was in pain and I was very tired. My right lower leg had locked up and my feet were absolutely battered. But the pain was experienced very differently this time. In a way I even found myself feeling it out as pleasurable, something I have heard people speak of, but had put down to a perverse kink that some of these eccentric Ultra types have. Interestingly though, it seems when you side up against pain and tell it you won’t be giving into it or allowing it a voice, it shifts from being something you want to push away, to something that you feel grateful to bare.

The last tough section was on the Cam High Road. I had not slept for around 40 hours at this point. I decided to have a couple of pro plus. This was almost a disaster. My heart raced like crazy for all the caffeine and coupled with a tired mind, I felt myself slipping into psychosis. I kept feeling really desperately thirsty, but I was peeing every 20 minutes or so and it was as clear as it can get. I panicked that I might have lost of track of the paracetamol I had been taking and perhaps my kidneys were failing. I cried as I though of my wife Kim and the kids and how their dad had died doing some crazy race. Eventually the caffeine whirlwind subsided and I returned to just being really very tired again, it was a massive relief. I was not going to die, so I had that going for me.

Eventually the cam high road turned to trail again (a few last wet bogs for my bashed up body to contend with) and I saw Hawes in the valley down before me. As I made my way towards the town a few people met me. “Hey are you Luke?” , yes I replied, surprised that people would be interested in a mid pack runner hobbling in. I received pats on the back and congrats.

I made my way towards the finish on the high street and walked into a heroes welcome. This is one of the great things about the Spine. Of course the elite folks get followed closely, but everyone who comes in gets streamed live on Facebook and giving a mini interview like your someone important. When you hit the finish line, everyone knows who you are from the tracker, and so you get lots of first name based congrats holla’ed out at you. Everyone is a hero on the Spine, the elite speed goats coming in a day before everyone else, and the back marker coming in last. Equal sincere grats are given to all.

I made my way to see the Medics to find out I had Cellulitis in my right lower leg and would need a course of antibiotics. It was at this point the whole lower leg locked up and started to swell. Its almost like it knew we were finally done and so shut up shop for the day My toes were also starting to go an angry colour of red and black. I could see it was going to be a fair while before I could run again, but I was OK with that. I had just done plenty of running and was feeling runned out.

I got myself to the hotel and slept for 10 hours, woke up and ate a veggie burger from the Hawes pizza shop and then went down for another 7 hours.


A lot went well for me on the Challenger. I feel its a start of me really finding my grove at these long distance events. You cannot side step and gain what real race experience gives you. You just have to get out there and learn. Sure, some great tips are around, but none come close to first hand experience.

So the moral of this race was that I had a lot more in me then I thought. That a 100 mile race will eat you alive it you don’t have a solid reasoning or mental base to tackle the ups and downs that will come. Pro Plus necked down on top of two days without sleep causes a temporary psychosis that you really could do without. And Altra King MT’s are not a good option on a long distance foot race.

It’s now about just over a week later and I am still resting up. My leg is still sore and I can’t wear socks as the band digs into the swollen flesh and makes a grove. My toes are now black. But I feel good knowing I am capable of a lot more, even when things get tough.

Next big race? Revenge of the North Downs Way 100. This time a bit wiser and a bit hardier.

TPM Software on a Raspberry Pi 3 Model B+ with Infineon Optiga™ SLB 9670 TPM 2.0

Some quick notes on how I installed Optiga™ SLB 9670 TPM 2.0 chip and compiled the TPM 2.0 software suite to allow communication via the tss stack and resource manager / tools.

I first purchased the Infineon Optiga™ SLB 9670 TPM 2.0 from Its a standard module that fits onto the GPIO (general-purpose input/output) pins along the top edge of the board. Infineon Optiga™ SLB 9670 installed on GPIO

Once the board is in situ, its time to enable it within the Kernel

I used Raspbian Buster as the OS (work is underway to support Fedora IoT).

Open your /boot/config.txt and add / uncomment following overlays


Reboot and you should now see the TPM

root@raspberrypi:~# dmesg | grep -i tpm
[6.677452] tpm_tis_spi spi0.1: 2.0 TPM (device-id 0x1B, rev-id 22)

root@raspberrypi:~# ls /dev/tpm0 

Install TPM2-software

First off, install build dependencies

apt-get install build-essential \
		autoconf \
		autoconf-archive \
		automake \
		libcmocka0 \
		libcmocka-dev \
		libcurl4-gnutls-dev \
		libgcrypt20-dev \
		procps python-yaml \
		iproute2 \
		git \
		pkg-config \
		gcc \
		libtool \
		automake \
		libssl-dev \
		uthash-dev \
		doxygen \
		libglib2.0-dev \
		libltdl-dev \
		libdbus-glib-1-dev \
		libgirepository1.0-dev \

Compile required projects

Note 1: I install specific branches here, as the purpose for me using the stack was to work on porting Keylime to ARM

Note 2: I performed all this as root, as its for a development project.

You might possibly be able to work with a later release or even master.

A lot of the following I snagged from Peter Huewe


git clone
cd tpm2-tss
git checkout 2.0.x
./configure --with-udevrulesdir=/etc/udev/rules.d --with-udevrulesprefix=70-
make -j4
make install
useradd --system --user-group tss
udevadm control --reload-rules && sudo udevadm trigger


git clone
cd tpm2-tools
git checkout 3.X
make -j4
make install


useradd --system --user-group tss
git clone tpm2-abrmd
cd tpm2-abrmd
git checkout 2.0.3
./configure --with-dbuspolicydir=/etc/dbus-1/system.d \
            --with-systemdsystemunitdir=/lib/systemd/system \
            --with-systemdpresetdir=/lib/systemd/system-preset \
make -j4
make install
pkill -HUP dbus-daemon
systemctl daemon-reload
systemctl enable tpm2-abrmd.service
systemctl start tpm2-abrmd.service
export TPM2TOOLS_TCTI=""

Lets try that out..

As long as your resource manager is running, you should now be able to talk to the TPM.

root@raspberrypi:~# tpm2_getrandom 8
0xE5 0xCD 0x97 0x20 0xD1 0x86 0x95 0x4A

root@raspberrypi:~# tpm2_pcrlist 
sha1 :
  0  : 0000000000000000000000000000000000000000
  1  : 0000000000000000000000000000000000000000
  2  : 0000000000000000000000000000000000000000
  3  : 0000000000000000000000000000000000000000
  4  : 0000000000000000000000000000000000000000
  5  : 0000000000000000000000000000000000000000
  6  : 0000000000000000000000000000000000000000
  7  : 0000000000000000000000000000000000000000
  8  : 0000000000000000000000000000000000000000
  9  : 0000000000000000000000000000000000000000
  10 : 0000000000000000000000000000000000000000
  11 : 0000000000000000000000000000000000000000
  12 : 0000000000000000000000000000000000000000
  13 : 0000000000000000000000000000000000000000
  14 : 0000000000000000000000000000000000000000
  15 : 0000000000000000000000000000000000000000
  16 : 0000000000000000000000000000000000000000
  17 : ffffffffffffffffffffffffffffffffffffffff
  18 : ffffffffffffffffffffffffffffffffffffffff
  19 : ffffffffffffffffffffffffffffffffffffffff
  20 : ffffffffffffffffffffffffffffffffffffffff
  21 : ffffffffffffffffffffffffffffffffffffffff
  22 : ffffffffffffffffffffffffffffffffffffffff
  23 : 0000000000000000000000000000000000000000
sha256 :
  0  : 0000000000000000000000000000000000000000000000000000000000000000
  1  : 0000000000000000000000000000000000000000000000000000000000000000
  2  : 0000000000000000000000000000000000000000000000000000000000000000
  3  : 0000000000000000000000000000000000000000000000000000000000000000
  4  : 0000000000000000000000000000000000000000000000000000000000000000
  5  : 0000000000000000000000000000000000000000000000000000000000000000
  6  : 0000000000000000000000000000000000000000000000000000000000000000
  7  : 0000000000000000000000000000000000000000000000000000000000000000
  8  : 0000000000000000000000000000000000000000000000000000000000000000
  9  : 0000000000000000000000000000000000000000000000000000000000000000
  10 : 0000000000000000000000000000000000000000000000000000000000000000
  11 : 0000000000000000000000000000000000000000000000000000000000000000
  12 : 0000000000000000000000000000000000000000000000000000000000000000
  13 : 0000000000000000000000000000000000000000000000000000000000000000
  14 : 0000000000000000000000000000000000000000000000000000000000000000
  15 : 0000000000000000000000000000000000000000000000000000000000000000
  16 : 5b98acb307b7e78e5d5791151c7d34a02fe9fd448a5ce43ee1b8bd8c886b01cf
  17 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
  18 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
  19 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
  20 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
  21 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
  22 : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
  23 : 0000000000000000000000000000000000000000000000000000000000000000

Imber Ultra 2019

A couple of weekends ago I ran the Imber Ultra (a little late to write this up).

The Imber ultra is a 50k event based around the Salisbury Plains, in Wiltshire.


Training was very spotty leading up to this race. I ran an Ultra called the Montane Cheviot Goat in December 2018 which left me a little busted up with some knee issues. I spent most of January / February going through the cycle of trying to resolve issues with strength and conditioning work, to then go out for a run tester , to find I was still not ready and needed more time. I ended up ‘DNS’ing on two races already this year, the SAS Fan Dance in Brecon, South Wales – and the Brecon to Cardiff ultra.

Around February my knee was fixed up and I managed to build a bit of mileage ending in a 20 mile trail run the week before this race.

I decided I was not going to go full tilt on this race and have it as a warm up Ultra to other races in the year. I also plan to run the Newport Marathon in May this year, and so I did not want lose two weeks of training from getting to busted up running an ultra.

Newport will be my only road race this year, after that its back on the trails for the North Downs Way 100 mile race, and the Montane Spine Challenger.


Not a great deal to say here. The race was only 30 minutes away from me. The night before I put out my saloman s-lab vest, filled two soft flasks with tailwind, and packed some sachets of tailwind into the vest, along with a couple of trek bars.

My mate Mark and the Imber race staff recommended road shoes (he ran it the year before), so I wore some Altra Torin’s. Turns out it was a lot more muddy this year, very muddy in fact. I took a few falls during the race and ended up quite often skiing along some of the muddy paths, but this was balanced by being able to run in road shoes on the tarmac sections.

I also checked the weather, and there was a storm warning ‘Storm Freya’ (80mph gale force winds / heavy rain). I thought to myself ‘this should be interesting’ as Imber is bang in the middle of the ‘Salisbury Plains’ which is a wide open space used by the military, its very exposed and is very windy, even on a mild day. I can’t say I was freaked out or anything, I am used to running out in the mountains during the winter months, so I trust my gear a lot. If anything I made a mental note to look out for loose tree branches or stray debris hurling around in the wind. I did not want to end my life with ‘runner killed by falling tree’.


I started off at very steady pace. I never race off, its too risky – muscle shock can happen here and play out later on in the race. You can get away with that on a 5-10k, but on an ultra it can easily cause problems later on. For me, the first mile is a mini warm up.

There was a muddy climb at the start, followed by a long trail path dropping down about 200 ft. Normally I would whizz down these sort of sections at a 6-7 minute mile pace, but I was slipping all over the place and almost taken out other runners. From here on in, my pace dropped for the climbs and went up again for the flats and downhills, as expected.

My watch was showing an overall average pace of 9 minutes per mile, which meant I was on for a sub 5 if I could keep it up (a nice enough time for a muddy 50k with a some elevation).

The old legs were fairing me well. I kept on top of my nutrition, by sipping on my tail wind and letting chunks of energy bars melt in the corner of my mouth. It was proving to be a good race, right until I got to about mile 18. This was when ‘Storm Freya’ kicked in and reduced us all to walking, or a very slow forward leaning jog. At times it was even a challenge to walk forwards whenever a strong headwind came in.

For this section I put on my goretex jacket (Montane Spine Jacket, freaking love this coat) and pulled down on the cords of the climbing jacket style hood. The last ten miles is normally the faster section (where my road shoes would have come in lol!). Here I slowed down to 11-13 minute miles and just focused on driving it home to the finish with a time of 5:40.



Back at HQ I changed into dry kit right away and drank a pre-mixed tailwind recovery drink (I likely sound like I am promoting them, promise I am not, I just get on well with their gear). I did some stretches and chatted with some other runners.

I got my race mug (they give you a nice thick clay moulded mug instead of a medal, which I really like as I use it for my coffee).


Went home and spent the evening watched ‘Loser’ on Netflix and stuffed my face with food.


Great race, and really good value for money. All of the event staff were super supportive and welcoming and the race went without a hitch. Its also a really nice course, not a crazy amount of elevation, but definitely not flat.

Part Two: Montane Cheviot Goat 2018


Having covered the preparation and kit in Part One, its time to cover the actual race itself.

I stayed locally with my family, arriving on Friday evening the night before the race. We had a 7 hour drive up from Wiltshire, not ideal, but getting there the day before meant a half decent sleep (as decent as you can get before a race).

Registration was fairly simple, I walked over to the village around 7pm with my five year old who was super proud to be wearing a head torch and got a lot of praise from Mountain Rescue.

All of my kit was already in order. I just needed to show my dry kit and emergency blanket, collect my bib and GPS tracker, which was taped to the strap of my pack.

I had spent the week previous insuring everything was packed and prepared, several times over. I have little trust in my memory and getting things right, which means I tend to double down on checks and come out the other side in good shape.

I had compiled and printed out checklists for the half way stop, where my drop bag would be. This way I could tick off the key items and get out as quickly as possible.


Friday night passed with as expected, not a great deal of sleep. I got up at 4am and ate a bowl of ready brek with a chopped up banana in and a couple of cups of my favourite black coffee.

At 5:45 am I entered Ingram village hall for the race briefing. It was that typical atmosphere of pre-race tension, where runners almost come across as unfriendly or at least unapproachable. Its really just people getting focused on what is ahead. I know this now, from having done previous events, but to anyone new it may seem intimating at first. I knew that once we were out and running, I could not wish to meet a nicer bunch of folks, even if they look stand off’ish at this juncture of the event, some of them might be new life long friends in the making.

6:00 am and we have now moved to the start line. It being the winter, it was still pitch black, but the weather itself was fair for this time of the year. There was a gentle drizzle and it felt around 3-4 degrees.

The countdown happened and we all shuffled off. I was around mid pack at this point.

The first 10 miles or so were only what I could describe as a pleasant rolling along. I felt strong and kept a consistent pace over the undulating landscape. I remember the sun came up around 8am and everything just seemed great. If the race would remain like this, it should be breeze. I would most definitely be signing up for this again next year, might even see if I can book my place for next year when I get back!

The ETA on my watch was showing a 13 hour finish. Way below my goal of 15 hours. I floated through the various check points and topped up my water and tail wind each time. Every 15 minutes a watch reminder would ping “Drink!” to which I would sip some tailwind, and every 30 minutes “Eat!” where I would have a bite of a Trek style flapjack bar.

We started to hit some of the bigger hills. I could feel some fatigue building a little in my legs, but nothing that I could not manage. I had been eating hills for breakfast leading up to this race, so the big looming ridge line of ‘Shillhope Law’ did not phase me too much.

In not to short a time I was up and over and working my way down to Barrownburn Farm where the M6 halfway stop would have hot soup and my drop bag waiting for me.

It was on this last decent before M6 that the first factor went wrong for me. I took a weird footing where my heel came down much lower than my body anticapted and snapped the leg to its full extended position. Right after this, I felt a dull throbbing pain in the Plantaris right behind the knee. This was far from making me need to stop or limp, but I was a tad concerned and hope it would be shaken off and not develop into something more serious.

M6 was packed. Lots of now muddy sweaty runners with steam bellowing off them all sifting through bags of kit while munching on food. I could see a nice big open fireplace with a sofa and made the decision to avoid it like the plague. I instead grabbed a spot by a table and used said table as a chair to pull of my saturated shoes and socks.

I followed my checklist.

  • Watch off and plugged into USB Charge Bank
  • Shoes / Clothes off and towel dry
  • Put on new base layers and flip flops (I never bothered with the flip flops, my feet were fine)
  • Change Batteries in Head Torch ready for evening.
  • Top up Tailwind / Water and add to Vest
  • Add 7x Energy Bars o Vest
  • New socks and change into Altra King MT for the coming mudfest.
  • Pack and Watch Back on
  • Eat! (Here I had some soup, ambrosia creme rice and McCoys Salt and Vinegar crisps in the space of 5 minutes).
  • GTFO!

Note: if I do this race again, I am not going to bother with the clothes change, maybe socks, but that’s it. These checkpoints are a complete time sync, I did well to get in and out, but you really need to watch yourself.

After leaving I walked for a while as I was stuffed with food. I got the idea to not run from another chap I met on the road leading away from the farm. I think his name was Neil, I can’t recall now, but a lovely man – big beard and a consultant for the NHS (you know who you are). We started to run again once we had digested our food. I am sure it might have lost a little time from this, but banking all that lovely energy was bound to be pay off later in the race.

I was also aware that I had just crossed the threshold. After leaving M6 you really have to finish the race. From M6 a DNF will mean a lift in a vehicle back to Ingram, but after this juncture you entering terrain mostly inaccessible to vehicles. The brilliant folks of North of Tyne Mountain Rescue Team would find a way to get you back to safety, but you would have a wait on your hands while they get to you first.

After a while the road ended and we were back on the hills again and onto M7. My leg was still nagging me and getting louder. I was just going to have to live with that. At this point I deployed my first psychological trick of ‘it could be worse, it could be X..’, you basically think of something much worse than what is currently bothering you. You then try to muster a feeling of gratitude that you’re not suffering with the more grievous situation. I thought of a broken ankle, a  real nasty one where you cannot even put weight on your leg. This worked and my perspective changed to seeing things as really not to bad.

I then came across the hut at around the 30 mile point. A look at my watch showed it was around 3pm and would be getting dark soon, so this would be an ideal opportunity to put an extra layer on and have my head torch deployed.

Things were a bit of a blur here until I hit Windy gale / M9 where some Marshall’s were filing everyone’s water up and pointing us into the right direction. Up to this point I had been going solo and it was actually really nice. Don’t get me wrong I like others company, but I love the feeling of it being just you and raw nature all around. Especially when its night, foggy and you’re warm in your gear with food in your belly. I did run sections here, but occasionally I remembered that one trip could result in me being down and with no one around to assist, this had me instead do a slow ultra style run with long arms waggling back and forth – it was also kinder on my leg.

From there I eventually reached the approach to the Cheviot (largest mountain in the ranged)  and teamed up with some others on route.

I had it in mind that the trip up and down the Cheviot was near the end of the race. This section of the course is paved with flag stones the whole way and its a very mild climb to the top. I passed other runners coming back down again and we exchanged pleasantries.

The climb to the Cheviot almost felt like a nice easy closing to what was a very difficult route. I almost remember there being fairy lights dotted around to make things feel light-hearted, in fact carol singers giving out mulled wine to the runners would have been apt, but I know that was not the case, its just that it was so much easier than what had come before.

Naturally the good times did not last and I had been very wrong about a near ending. A cruel twist was coming in the form of more bogs, in fact some of the shitiest bogs through out the whole race. Well actually, saying that, they were all pretty shitty. I can never remember finding any nice or cute bogs, just shit bogs. Maybe its more that these were bogs + fatigue = shit bogs.

I think it was Comb Fell where we hit a special sort of hell. This was just a series of trying to figure out ways to navigate over gaping holes, where some were just very slidey mud and others you get a special prize of legs being swallowed up to your knees (or hips if you were really lucky). I remember thinking to myself, “WTF, water should run down hills!!! How can there be large pools of water going up a bloody hill!”. I was not alone, everyone around me was cussing and swearing at the bogs.

At this point I deployed the special weapon. My special weapon was a playlist on my phone, trigged to start by holding down a button. It would then random play songs from a playlist full of eighties classics. We are talking really cheesy easily digested stuff here, you don’t want to be listening to Leonard Cohen when trying to find the motivation to hoof it up a muddy hill.

My next mistake was on it’s way, thankfully the last one.

I was tired and I turned into a sheep (not a Goat). I was tracing the steps of another runner who looked confident, yet in reality it was the blind leading the blind and we got both became lost. I think it was near “Standrop Rigg”. We had to cut back through this field of heather which was like walking on 10 stacked up mattresses with the occasional hole full of ankle gnashing rocks. This must have added about an hour to my already ballooning finish time. To be honest though, I had long stopped caring about time or place of order at this point, it was all about finishing this now and bringing it home.

I just wanted to get back now. My leg was hurting a fair amount, and would likely have been much worse without the Ibuprofen I had dropped at M6.  I actually started to fantasize about tarmac at this point, lovely flat predicable tarmac – ooohhhh! In fact, screw that, I would be happy with a nice lovely gravel path, in fact anything , anything at all, but not more bloody bogs or bumpy ankle turning rocky moorland.

As with all things, that section and patch of darkness came to pass. That was my second psychological trick I kept up my sleeve, “this too will pass”, everything eventually comes to pass, unless your in some sort of purgatory hell – I think muddy bogs at night where you can’t see more than 4 foot in front from your torch lighting up the fog, is a good example of a purgatory hell.

I hobbled up the last hill (Dunmoor) and down again and back into Ingram.

Five of us grouped up at the end. I remember one guy being at the back and a little worse for wear. Part of me felt I should be turning around to pep talk him a bit more and see where I could help, but I honestly did not have the spare energy left, everything was on keeping me moving forward. I did keep an eye on him though and made sure he never fell behind, so I was not a complete loss to my fellow man.

We all got back in 17:02 hours to the finish at 23:06 at night.

I was met by my lovely wife and daughters who were a super sight for sore eyes. Bless them, they had some hot milk and a blanket ready for me, but I passed on those and had them get me back to the little cottage we had rented, as I could feel the cold and the shuddering starting to kick in.

I shortly afterwards collapsed asleep on the sofa, which was a shame as I would have loved to have watched the others coming in. I know some folks were out there battling until 6am, spending the full 24 hours at it. The next day I could see runners hobbling around near the village hall, looking completely drained.

I think of these folks are the true hero’s of these events, those that spend practically all night battling their own demons in the darkness to eventually hobble over the line exhausted. Don’t get me wrong, the podium finishers are amazing, but for me it’s the folks really against the odds that come in with nothing left after a night of doubt and darkness who sing to my heart.

So now it’s Thursday evening and almost a week after the event. I feel sore, but I am fixing up fairly well. It looks like the leg was nothing to serious, but a gentle jog later next week will be the arbiter of that.

The Goat was an immense experience with lots of depth and weight. The kind of experience you really want from an event like this, even though you would not expect in delivered in such a harsh form, but those highs and lows, the lovely folks I met on the way (If only I remembered all the names), all made this and unforgettable experience. Coldbrew events were right, the Cheviot Goat is not just an ultra, it’s an expedition.

On that note, I need to give  props to Coldbrew Events , Montane and the amazing North of the Tyne mountain rescue folks and their super keen dogs. Also my misus for being so patient during all my training runs and Coach Michelle for helping to build me up from a dodgy hipped ultra casualty in the making to someone it was a good bet would finish the event, and even possibly do quite well (next time!).

So now would be a good time to ask the question ‘Would I do it again?’.

..Dam right.

Well if not, only because I want to do the Montane Spine Challenger next, which falls a month before after. Physically I think I could recover enough in this window, so its not so much physical aspect, its more the financial and needing to travel up’north twice in a short period, while having a young family and job to do.

I will definitely return to do the Goat again though, its won a very special place in my heart.

Part One: Montane Cheviot Goat 2018


What follows an overview of my training and the Kit I used for the Montane Cheviot Goat 2018. I will cover the Race itself in a second part, due shortly!

A quick summary of the event for those who don’t know; The Cheviot Goat is a 55 Mile Winter Ultra around the Cheviot Hills of Northumberland. It is said to have the lowest population density in England. The race is titled The Cheviot Goat as Goat itself resides in the hills and is the only animal hardy enough to survive the conditions, unlike domestic livestock.


I signed up for the race around 6 months in advance, so I had lots of time to prepare and train. I took on the excellent coaching services of Michelle Maxwell, who soon spotted my weaker points (I joined her with a bad knee and a perpendicular hip swing). Michelle set me up with a strength and conditioning program and started to build my mileage up towards the race itself while mixing up my training with efforts sessions, strides and building endurance / pace.

We reviewed my progress a week before the race, and my fitness levels had noticeably improved a lot, so the coaching really helped get me to my best. On my own I am sure I would not have stuck so well to a training schedule (the accountability really helps) and would have followed a generic training plan, which does not account for injuries and general life events that happen during a training period.


blue line is my fitness level over 6 months

My training arena was mostly off road / trail running with as much elevation as I could find in my local area (the Cotswold’s). I also topped up my elevation by making as many weekend trips as I could to the Brecon Beacons and Pen Y Fan.


I am a firm believer in pre race recce (reconnaissance).

The benefits from a good recce are both practical and psychological. On a practical level, you get to brush up on the navigation of the route, which of course pays off big dividends come race day. Psychologically you get a huge boast of experiencing the terrain first hand, rather than finding out what is in store and feeling the nervousness and magnitude on the race morning instead.

For my own Recce I used NAV4Adventure. They put on a 2 day event where you and other runners of the Goat get together to experience key parts of the route first hand (including the worst of the bogs!). This was run by Joe Faulkner, now 2 times finisher of the Cheviot Goat and a Spine Race Veteran. Being able to pick Joe’s brains all weekend was really useful.

I had a great time, we stayed in a nice bunkhouse for the weekend and I made some really good friends who I am still in contact with.


I heard Joe is running another Cheviot Goat Recce for February 2019. I massively encourage you to jump on a NAV4 Recce if you can, it will give you a big confidence boost for the race and they are really enjoyable weekends!

Kit and Equipment

For this race I really made sure I tested my kit as much as possible, this included a full trial run on the Brecon Beacons Marathon.

I am happy with how everything fared and I had no kit failures at all during the whole event.


For my Jacket, I used the Montane Spine Jacket. The Spine Jacket is a very simple Gore-tex shell, which balances well weight and protection against the elements. It keeps things very simple, but has a robust build quality. A single breast pocket is all you will find, and I used this to store my phone. I also brought along my Mountain Equipment Lhotse shell, with the idea that I would change into this in the second half, if the weather turned very nasty. As it happens, the rain and winds were mild for the race day, so I wore the Spine Jacket for the whole event.

Top Baselayers were an Arc’teryx Phase AR crew (which I have loved and used for a while) and a Icebreaker Merino crew which I changed into at the halfway point. I could have stayed in the Phase AR as this thing is so brilliant at wicking and drying.

For the bottom baselayer I used Montane Trail Series Thermal Tights which were great. My legs were warm as toast through out the whole event, no matter whether they were soaked with rain or caked in mud. I noticed a lot of other runners wearing the same tights, so Montane seem to have got it right with these bottom layers.

Waterproof trousers were some OMM Kamleika Pants. I never had to use them, as the Montane Tights were so good.

Buffs and Hat were both Merino and made by buff. Head wear always gets wet quickly through sweat or rain, and so I love merino here as it wicks so well and stays warm even when soaked through. I am big fan of Merino and you will see it repeated lot in this post.

Footwear. I am an Altra fan, I don’t run in anything else now. I understand footwear is very personal, so no need for me to go into details here. I started in some Lone Peak 4.0‘s and ended in some King MT’s  (ugly as sin, but great for the mud and staying on your feet thanks to the velcro strap).

I spent quite some time trying to get my Socks right. I first tried out the waterproof route, with sealskinz. I found the sealskinz were great, until they were not so great. They work very well at keeping feet dry when dipped into deep puddles and river crossings. The problems for me started when it rained very heavily. I found that water runs down your legs and collects into the socks. Before you know it, you’re then squelching around with pools of water trapped into your socks and have no choice but to take them off and empty them out. In the end I went for some thick Merino wool socks. These did me well, my feet were wet the pretty much the whole time, but mostly warm, even when tacking the very boggy areas. As soon as I hit less water logged ground and got a chance to run, they wicked out very quickly.

For my Backpack, I used a Montane Via Dragon Pack (20 liter). I also have an OMM Classic, but I prefer the ‘vest’ type front sections on the Dragon Pack, as the accessibility means i don’t need to stop and remove the pack to get at most things. It did me very well, the only slight thing noted is the water bottle pockets mean you need to remove them to drink, but that worked OK for me.

My poles were Black Diamond Carbon Z and I am pleased I took them. I would encourage anyone doing the goat to take poles! Even if you don’t like them, they are so helpful for getting across the bogs. They can be used as leverage to stop you sinking too much or to pull you out, and for taping the surface to test how solid it is and save you finding out with half your leg submerged in energy sapping mud. I like the Black Diamond models, as they easily collapse into a fold-able section of three, thereby making it very easy to stow them away.

Last of all were my gloves. I had some merino ron hill gloves, kept under some Montane Prism Mitts with Montane Minimus covers over the top when it got wetter in the night. No complaints here, my hands were very nice and warm.

For gadgets I had a GPSMAPs 64s for Nav (alongside a paper map and compass). And a Petzl MYO Head torch with Lithium batteries which fair better in the cold. I am not a fan of the MYO, I find the batteries give out to quickly. I put in fresh set of Lithium batteries for the evening to then switch on the torch at about 4pm when it got dark, and by around 9 to 10pm it started to flash its low battery warning. It might be a faulty set that I have, but I won’t be using the MYO again as the last thing you want is a head torch that gives up half way through the night. I am going to give it another chance though, as it may well have been from me running at full lumen’s , which is too much to expect with the energy supply it has. A lot of folks seem to run a a minimal setting, so it could be a dumb user, more than a dumb device.

For nutrition I used tailwind (love it!) which agrees with me very well and lots of trek bars. At the halfway checkpoint I fueled on some soup made by the events team and a big pot of Ambrosia Creme Rice and a mars bar (note: I was sick of sugar by the end, so will change that up for next time).

Last of all was a lifesystems emergency blanket, which was checked by mountain rescue at the race registration point.

Other drop bag items, were some food (ambrosia creme rice / mixed nuts and salty crisps), lots of spare batteries, change of socks and basic care items such as sudo creme for sores, a blister kit, some plasters, baby wipes and talcum powder.

To be continued with the actual race report itself in part two..