Know Pain

So I completed my first road race using a road bike yesterday. Compared to DualX, the race was much easier seeing as I was able to drive home after the race.

Organization and general issues

The race organization was excellent. Getting into the event and finding a parking spot was easy, as was leaving the event. The distance between the parking and the start line was tarred so it was pretty easy to hop on your bike and ride to the start line. The starting pens were clearly marked off and constant announcements were made alerting people when they should start approaching the start pens and to which pens they should enter. The biggest issue at these kinds of events (especially ones of this size) is finding a toilet in time. Thankfully not only was the usual porta potties available, but the stadiums facilities were also available for use which meant there was no queuing at all. I think this was the first time I have ever attended a race where there was no queue and it was amazing :P. In hindsight, I didn’t actually encounter any post race issues at that event.

The Ride

The race did not start with the cyclist riding straight out of the pens, instead, the organizers would empty each pen onto the road which was a 100m or so away from the pens and gave the rides a bit more space to launch from. Getting out of the pens and onto the road leading to the start line was mostly uneventful, except for someone that managed to fall down before the starting gun was even fired while everyone was standing still.

I hung back on purpose and tried to find a mostly out of the way spot in the bunch since I wasn’t sure exactly what to expect. In hindsight, this was a horrible decision and I should have tried to get as close to the front as possible. Since I had never participated in a road race before, I had no seeding which meant that I was pretty far in the back. This meant that I was constantly blocked by little groups of riders that felt as if they were not moving. This was thankfully only really an issue in roughly the first 5km’s, as after that the group started to thin out enough that I could overtake at will.

I had really underestimated my riding pace so before the race I expected that I would be averaging 20-22km/h over the race. In the end on most of the flats and downhills which was mostly the first half of the race, I averaged 31km/h, while my overall average for the race (including the climbs) was 28km/h (this is based on my personal time and excludes the pause for my flat tire).

Just before the first water point I hit a bump that I am pretty sure caused me to get a pinch flat. Because I have never gotten a puncture in any of my previous races, I wasn’t sure if what I was feeling on the bike was a bad road or a puncture. So I stopped at the water point and topped up the air in the tire. In hindsight I should have replaced the tire at this point as I may have had some assistance. I had not travelled over a kilometre or so when I started to get the same feedback from the bike, at this point I was fairly certain that it was a puncture and had to pull over as soon as I could find some clear ground on the side of the road. Seeing as I had almost zero experience changing the tire in the middle of a race, the change ended up costing me way too much time (almost 8 minutes). This was mostly due to me double checking if I actually needed to change the tube and then finally the effort required to get the tube in and the tire closed.

The race was mostly uneventful after this, which meant that I could focus on trying to push out as much power as possible without putting me into the zone where I start cramping. This was pretty much what I ended up doing after the puncture as I tried as hard as possible to catch up to the people that had passed me while I was busy with my repair. Over the next 15mins I easily caught up with a number of people that I had spotted previously and slowly started getting back to the point where I was attacking new riders on a regular basis.

If there is one thing that I absolutely loved about the race it was that I was constantly attacking, which happened on both the down-hills as well as the up hills (which I did not expect would happen). There were roughly two other riders that I encountered that were able to pace me and not have me feel like I was not moving. Sadly I lost the first rider when I stopped at the water point to refill and lost the other rider on one of the longer up-hills where she slowed a bit.

It was also quite interesting to see the difference between the different types of riders in the race. In my group, I mostly encountered riders that were just trying to get to the end of the race (I thought this is the group I would be in as well). The other group in the short race consisted of smaller bunches of more experienced riders which would occasionally slingshot me in the coolest manner. Towards the end of the race I encountered the longer group of fast riders who would always ride as a bunch (who I could also never keep up with), this is in comparison to the larger group of short distance cyclist who never rode as group or drafted at all and instead preferred to ride side by side which meant they were always working themselves to death for no good reason.


In the end this was a great race to start the year on. I now really want to find a group to train with since it was pretty clear that I am not pushing myself nearly hard enough on my weekend rides. I left the race feeling like I gave it my all and would gladly do it again. The pain that came after my recovery sleep wasn’t nearly as bad as I thought it would be, but still appeared in the form of major neck tension and soreness in my joints.

The statistics from my race can be found here :

Did it hurt when you fell from heaven

No, but it hurt like hell when I fell on the trail. Cheesy pickup lines aside the race yesterday was really brutal. This wasn’t helped by the fact that I took a fall early in the first run. Almost four months after I finished my first dualX event, I decided to try and run the race again but on another course this time. Sadly due to a number of issues I was nowhere near where I wanted to be with my fitness and training, this combined with me doing the full distance (vs the half distance previously) meant this was possibly the worst race I have ever run and I am not even sure how I managed to finish this race.

Organization and general issues

As with the previous event organization was really well executed, everyone knew what they were doing and the grounds didn’t feel over crowded. Compared to other events the toilets were enough for the size of the crowd with almost no lines till about 10 mins before the race start.

Even though I started the race an hour earlier than my previous event it was still crazy hot and I genuinely have no idea how one is supposed to cope/deal with this except being crazy strong/fit.

The first run

Knowing that I was not nearly as prepared for this race as the previous one, I decided not to push for a front of the pack position as in the previous race, rather I stuck to the back to allow as many people to pass without me holding them back, which is an annoyance I think many people don’t seem to care about. The terrain was not nearly as easy as the previous race when it came to technical skill. As I mentioned in the introduction, I took a fairly hard fall around the 3km mark. I was pondering about things I needed to do in transition and did not notice a rock which was covered in dust till I kicked the rock and tripped. As many of the people I train with will attest to, I fall often enough on the trail and sadly at this point I am just used to rolling with it. Unlike previous falls I managed to pull back a bit on the fall so that I mostly slid on my knees instead of smashing my palms into the ground and potentially making the situation much worse for the cycling leg of the race. Fall aside, even though it was hot and my HR was up even though I wasn’t pushing, I like to think that I managed to finish the first run reasonably well. I could have pushed harder, but I wanted to save energy for the ride (which I expected to be hard) so I am happy having not pushed harder.


It was pretty cool to be able to accurately track my transition this time. According to the data on the run I took about 3 mins for both transitions. This was again acceptable to me because I used the time to cool myself down and refuel before hitting the next part of the race. My transitions were more fluid that the previous race with the only hitch being that I had forgotten to remove my cycling gloves from my camelbak before the race started, this cost me about 20 seconds which is not the end of world time wise.

The cycle

I had prepared for this race based on the last DualX event I participated in when it comes to the cycle. So during the two (short) weeks of training I did as much distance as I could while throwing more climbing than I was used to. Sadly while that may have been enough for the last race, it did nothing for me in the current race. I had carried as much water and energy as possible, sadly I used all this even after refueling at the mid way water station. This combined with the crazy climbs up the mountain (I think there were few people besides the elites that were able to ride this all the way) mean that I was again insanely drained and worried about heat exhaustion. In the end I just gave in and ended up walking up the mountains and riding small sections where possible after recovering some energy during the walk.

After all the mountains and climbs on the last section before the finish the climbs were not to bad I got really bad cramps in my quads (first the left, then the right), to the point where I had to stop riding (twice) because the pain was unbearable. One other issue I didn’t have to deal with in the previous race was crazy steep descents. While they can be fun, I was generally so exhausted on reaching them that I didn’t even chance using them to recover some time, because I know the pain of falling on a downhill and its not something I want to experience on a race (It didn’t help that I saw someone perform an otb fall on one of the steeper descents). With all these issues I am still thankful that I took part in the race since it made pretty obvious what areas of my riding I need to work on, in particular I need to practice :

  • Sharp cornering on the bike (Mostly in the case of switchbacks on downhills)
  • Climbing on longer steeper hills
  • Heat acclimatization (This is more generic but I really need to do more heat training)
  • Downhill handling and faster descents

Transition 2 and Run 2

Not to much to say here, I desperately needed to cool down and used any water I could get to cool me down. There was sadly no more pepto left at the transition exit, so I had to fill up on as much water as I could. I started of the run pretty fast but forced myself to slow down because I knew I wouldn’t be able to finish if I used all my energy in the first 500m. Sadly in the end the heat was still too much for me and all I could manage was to alternate between a slow trot and a walk.


I do wish I had more time to train for the race but I am happy that I was able to finish in the end. I might try another one of these later in the year, but for now I need to focus on my tri which is going to happen in may. In closing there is one small victory that I managed to achieve yesterday, which was beating people with significantly better equipment than me :P

Details of the race :

Having completed the Dischem 21 last weekend, this will have been the earliest I have run a race in the year. I usually wait until around march so that I can get some training in, but I like to think I was consistent enough through december to be ready for this race.

Race Organization

Having never run this specific race before I was not really sure what to expect. Thankfully though, the organization was really solid and collection of race numbers for myself and my cousin went really smooth at the Fourways collection point. Traffic handling and direction at the event was splendid as well, for the first time (possibly ever) I don’t remember waiting for more than 5-10 minutes in traffic from the time we got off the highway till the time we parked. About the only organizational issue that I can remember was the insufficient number of toilets at the start point (though this is a common issue at almost every event).

The Run

The run itself was really enjoyable (both the route and crowd). The route in particular provided a wide enough area that you didn’t feel like you were constantly being blocked by slower runners all while snaking through a really nice neighbourhood. The hills are supposed to be notoriously bad in this particular race, but in the end it was the downhill that ended up hurting me more since they were way steeper than anything I had planned for and ended up smashing my heels after the first couple hundred meters. Because I was running with a partner (my cousin) for the first time ever on a race this long, I wasn’t totally sure about his pacing and I am pretty sure I ended up under pacing both of us.

Post Run

After the run was completed it was nice to be given a full bottle of Energade (in the last DualX we were given a single cup of pepto). Pre-empting not receiving any post race hydration, I had already brought along sufficient post race hydration for the both of us. As before I was pleasantly surprised to get out of the race area after the race had completed, this was mostly thanks to really well organized traffic control. My left foot is still experiencing some muscle pain caused during the downhill section of the race. But the pain is sufficiently reduced that I was able to perform a short run on Friday without aggravating the foot.


With the run over, I am really looking forward to completing a few more this year and hopefully completing a marathon as well. The recording of my race can be found here.

The moves count application which is used to transfer data from the suunto watches has a fairly major bug which prevents it from launching. This is quite an issue since the application is the only means of transfering data to the site which is the only method of accessing the watch data for further analysis (there are proprietary files that are dumped to the users home folder but thats a post for another day).

To fix this issue the app needs to run as an administrator to access a couple of registry keys. Unfortunately because of the weird way the app was developed and published, simply right clicking an app and selecting “Run As Administrator” does not work. To get the app to work, create a batch file with the following content and save the file :

"C:\Users\<Your UserName>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Suunto\Moveslink2.appref-ms"

Once that is done right click the batch file and select “Run As Administrator” to get the app to launch correctly.

Done :)

The process is fairly simple but is not very well documented if you only want to migrate your db server (server upgrade or replacement).

Start by backing up all the phabricator databases (yes there are alot) using the command

./phabricator/bin/storage dump | gzip > backup.sql.gz

The command will use your phabricator settings so that you dont need to provide any login creds.

This uses an internal phabricator script to backup all the required data and gzip it for you. With the data backed up copy it to the new server using scp or your choice or file transfer.

On the remote server run

gunzip -c backup.sql.gz | mysql -u <your user> -p

You will need to modify the mysql command to use your user/pass as needed , this can take a while so be patient. There is also no visible output from the restoration so patience is your friend.

The steps to this point are covered on the phabricator migration located here.

Once the db is restored, ensure that you create a new user for remote access and grant it access to all your phabricator db’s. There is no simple way to grant access to all the db’s, executing this script will generate the required sql for you which can then be executed to grant the required access.

SELECT CONCAT('grant all privileges on ', SCHEMA_NAME, '.*  to <new user here>;') FROM `information_schema`.`SCHEMATA` WHERE SCHEMA_NAME LIKE 'phabricator_%';

Once you have the required access ensure that you can connect to the db server from your webserver, this is crucial as the app goes offline if it can not connect to the db server.

With the db sorted the following commands will change the phabricator config to use the new server.

./phabricator/bin/config set <remote host>
./phabricator/bin/config set mysql.user <remote user>
./phabricator/bin/config set mysql.pass <remote pass>

Restart the daemons and webserver

./phabricator/bin/phd restart
service apache2 restart
service mysql stop

Once these commands have executed your server will now be using the new db and your mysql db will be stopped, at this point its best to verify that the web interface is still functional. If not revert and try to fix depending on what failed.

Thats about it really :), enjoy the new server.