2019 Sandy Point 10km

This weekend I completed my first 10km road race since June 2016. It wasn’t a personal best time for the distance nor was it my longest run, but I finished the event feeling more proud than I’ve felt in any running event. To understand why, I have to cast my mind back to February 2014 when our then three-year-old would leave me breathless running after him around the local park. I started doing the Couch to 5K programme to give me a hope of keeping up with him as he got faster and faster.

Five-and-a-half years later, I’ve come to really enjoy running and have completed six official marathons. In 2019 I wanted to focus less on events and more on running with my family; after all, they were the reason for taking up the sport in the first place. This year I’ve done a couple of parkruns with D(5) and we’ve had plenty of parkrun adventures with him in the pram while his brother was enjoying Little Athletics over the Summer months. I’ve also run 16 parkruns with E(9), notably the New Year’s Day double at Coburg and Darebin and his 50th parkrun at Foster (24:48). These two events were milestones as I realised that I would (again) have to start working hard to keep up with E and I started participating in track training at my local athletics club to give myself a hope of keeping him within arms’ reach until he’s old enough to run by himself at parkrun (eleven years old). The New Year double gave us the idea that we might run a 10km race together this year.

And so there we are… E’s first 10km race! He was excited when I woke him up. On our way to the start line he said he’d like to finish in about 1 hour 15 minutes, which I thought was easily achievable. I had said to K that I’d expect us to finish somewhere between 55 and 65 minutes.

It's cold but we're ready to go!.

We found ourselves near the front of the starting pen. Probably a little too far forward so we kept ourselves to the left, out of the way. The race started and we found ourselves running at a very comfortable pace; we completed the first kilometre in five-and-a-half minutes. My estimated finish time didn’t look unreasonable. The course was ever-so-slightly uphill from here and E found himself settling into a pace closer to six minutes per kilometre, which was great. We went with that and I checked in from time-to-time that he was comfortable. He certainly wasn’t out of breath. We reached the half-way point, and turnaround, at 31 minutes. Still in the window of my prediction. At half-way E seemed to get a bit of an energy boost, perhaps from reaching the 5km marker, perhaps because we were heading back downhill, but he certainly picked up the pace a little. The 60 minute pacer passed us at about this point and I said to E to keep his head up and follow that balloon. He stopped at the drink station, as he had at the two previously and caught me up effortlessly as I kept the pace. The next few kilometres ticked by pretty easily but I could see he was starting to fade a little.

As we hit 8km, I commented, “It’s 8 o’clock on a Sunday morning, what does that mean?”, he looked at me and I continued, “junior parkrun, 2km to go!”

“8 minutes, let’s go!”, he replied and took off like a rocket. E’s junior parkrun PB is 8:35. The ninth kilometre was our fastest of the run, 4:48. I wasn’t expecting that. We had breezed past the 60 minute pacer and were on our way to the finish. E kept close to a 5 min/km pace for the last kilometre and as we approached the end I could see that the official clock was on 59 minutes something. “Push hard!” and he did, leaving nothing on the track E pushed hard to finish his first 10km run in 59:43.3.

Pushing Hard to Cross the Line before the Hour

And that is why I have such a big grin on my face. I’m a very proud parent right now and am looking forward to sharing more runs with the kids.


See the details on Smashrun.

Back in England my Mum ran her first 10km on the same day. Doubly-proud!

Essential Browser Plugins

Sometimes my add-ons in Firefox go absent without leave and the only way I’ve found to get them back is to uninstall and reinstall them. I was making a list of the ones I use a lot for my own records and wondered whether others would find this list useful. So I’m publishing it.

1Password extension (desktop app required)

You need a password manager. Really.



Shorten, measure, and optimize your links.


DuckDuckGo Privacy Essentials

Privacy, simplified.


Facebook Container

Facebook Container isolates your Facebook activity from the rest of your web activity in order to prevent Facebook from tracking you outside of the Facebook website via third party cookies.


HTTPS Everywhere

Encrypt the Web! Automatically use HTTPS security on sites that support it.


Neat URL

Remove garbage from URLs.


Privacy Badger

Privacy Badger automatically learns to block invisible trackers. It’s also really easy to block unwanted content!


Running Challenges

Adds challenge progress information to your parkrun athlete results page. I’ve written before about how I use this to track my NENDY and since then I’ve helped to add the v-index.


uBlock Origin

An efficient blocker. Easy on CPU and memory.


Video Speed Controller

Speed up, slow down, advance and rewind any HTML5 video with quick shortcuts.


That’s it!

Which add-ons am I missing?

Vote For Aurora parkrun

Vote For Aurora parkrun

In January of this year, I joined the parkrun Australia Event Ambassador programme and I’m finding it’s a great way to give something back to this great community as well as sharing the experience I gained as founding Event Director of Coburg parkrun with other event teams. It’s also a great excuse to visit parkrun events besides my home event, which is a short jog from home.

I’m also working with a passionate pair of parkrunners who are looking to establish a parkrun a short jog from their own home in Epping North, near Wallert, in Melbourne’s North. This event is very close to being fully-funded and has recently secured a a base grant of $1,000 to go towards the start-up costs.

We are looking to launch this event soon and it will be one of over 360 parkruns in Australia to provide a free, timed, 5km running/walking event to the local community, every Saturday morning.

The overarching goal of establishing a parkrun event is to encourage the health and wellbeing of community members. The project aims to engage people from all backgrounds and of all fitness levels, abilities and ages, both to volunteer and participate.

We are looking to raise the funds now to purchase an Automatic Electronic Defibrillator (AED) in order to create the safest possible environment for our community to get together.

Could you please help us to secure this essential funding? To vote for our event go to The Aurora Seedling Fund and click the “vote” under our event or (if you’re nearby) head over to Sprout Hub Aurora and grab a coffee, with every purchase you get a bean to put in the voting box of your choice!

Then share this link with your friends :-)

Deep thanks.

Vote For Aurora parkrun


A highlight at work recently wasn’t directly work-related at all but a positive comment from a colleague on my use of the word “outlandish”.

“Outlandish” isn’t a word I remember using very much until maybe three years ago and now I use it quite a lot.

In the workplace, and in life in general, I value diversity and inclusion. I find myself drawn into conversations about inclusion a lot. One day about three years ago we were discussing the use “guys” when addressing groups of people; I’d successfully weaned myself off that word and onto “folks” as a more inclusive address. Moving away from the gendered term “guys” to folks took a little conscious effort, for a short time, but soon became second-nature. It was on that day that one of the team shared a link to a presentation entitled Sidestepping Ableist Language by Ashley Bischoff and viewing that presentation was a watershed moment for me. I’d say it was that day that I started to use the word “outlandish” instead of other ableist words, which were more prominent in my vocabulary. Again, it didn’t take much time or effort for me to move off one word onto another.

It makes me happy to know that a small change on my part can make a big difference to how included a member of a group feels.

I still wish I had a broader vocabulary.

For years now, I’ve been subscribed to the A.Word.A.Day email. I remember the moment I read the word petrichor for the first time and how I nearly leaped out of my chair when I discovered that my favourite smell had a name! This is a great source of word knowledge.

More recently, I’ve been enjoying listening to Something Rhymes with Purple, which is hugely entertaining as well as educational.

What’s your favourite source of new words?

HTTP Status Codes with Alfred

I’ve been doing commercial web-based development for about six years now and I still don’t haven’t committed each and every HTTP status code to memory. I refer often to HTTP Status Codes — httpstatuses.com to appear way smarter than I am.

Today I realised I could do this with fewer keystrokes (e.g. [Alt]+[Space]hs 418[Enter]) using the amazing Alfred - Productivity App for macOS.

Somebody’s probably already done this and I wish they’d shared it with me, so I’m sharing it with you.

Alfred Custom Search

You can import these settings (apart from the icon) using the following URL: alfred://customsearch/HTTP%20Status%20Codes/hs/utf8/nospace/https%3A%2F%2Fhttpstatuses.com%2F%7Bquery%7D

I tried to share the URL in a tweet but Twitter mangled it.

I hope this little tip helps improve your productivity.

What’s your favourite Alfred custom search?

Addendum (2019-04-22)

I am glad I shared this tip. It led to Ricky sending me this knowledge upgrade:

One brew cask install dash and a couple of clicks later and I found myself with an even easier workflow than I’d had before. No need for web browsers (or even an Internet connection):

Alfred and Dash FTW

Thanks Ricky!

Running to Work

The Story

I completed my first run commute in November 2015 but it wasn’t until after my last cycling commute the following April that running to work became my preferred start to the working day.

These days I run to work on Mondays, Wednesdays and Fridays, with the latter usually being a long run (over 21km). I’d like to share some thoughts on my active commutes with you. My journey is a little shy of 12km, which is a nice distance to start the day. Run commutes allow me to keep a base level of fitness without me taking too much time away from my family… it’s mostly time I’d be travelling anyway!


One question I get asked a lot is “do you run home?”. I don’t usually. I’m a morning runner for preference and I’ve had a couple of bad experiences of “doing the double” (i.e. running both ways), which have ended up with minor injuries. So I catch public transport home on the days that I run to work.

I habitually work from home on Tuesdays, which facilitates me taking the kids to where they need to be (Kirsty kindly does this on my run-to-work days).

On Thursdays I bring my clothes and toiletries to work in a holdall or small suitcase (depending on what I need to bring with me) for the next three runs. I bring my running gear home with me each running day. These days tend to start with the family travelling together to daycare, school and work, which takes the sting out of having to catch the train!

Carrying stuff

I’m often on-call for work and need to keep my laptop (a 12-inch MacBook) close by. I think I’ve been “paged” twice in three years of run commutes.

The light but powerful MacBook sits snuggly in the place of the removable reservoir in my Skycrane 2L hydration backpack. This backpack is absolutely ideal for my run commutes, it stays in place while I’m running and has sufficient storage space for my laptop, phone, keys, wallet, glasses and a jacket for after the run on the cooler mornings. It also has loops to which I can attach a pair of Million Mile Light V2 units so that I can be seen by other trail and footpath users on those dark winter mornings.


It doesn’t take a lot of motivation to run through the Melbourne Spring or Autumn… those mornings are the best. The hot Summer mornings can be more of a struggle and when it’s freezing cold and dark through the Winter it can be very difficult to get out of bed! My motivation for these mornings is simple, I promise my Merri Creek Running Club friends that I’ll meet them at a pre-arranged time and place via our WhatsApp group the night before and that’s enough to get me out the door on time!

Running with friends makes the commute go so much faster, which is a bonus. We often finish our run at one of Melbourne’s many excellent coffee shops for a post-run coffee (or gelati if we’ve run 21.1km or more, but that’s another story).

On the rare occasion that nobody is available to run, I know that my announcement in the group will mean somebody will be watching Strava to hold me accountable! For these mornings there are podcasts for company (and the Apple AirPods are splendid for running with).


While I prefer to run fasted, I was advised by my GP not to do this. Over the past six months or so I have been eating a slice of toast or a banana about 30 minutes before leaving home. For the long runs (anything over two hours) I’ve been taking bags of honey – one bag per 30 minutes is my rule-of-thumb; I typically stop at a water fountain to have one of these.

End-of-trip facilities

Active commuting would not be possible without suitable facilities at my workplace. I’m very grateful that not only does my employer provide on-site showers but also has a laundered towel service. When I arrive at my desk after a run commute, I feel set to start a productive day – far more so than the days where I’ve squeezed onto a crowded train.

Nearest Event Not Done Yet (NENDY)

Since handing over the Event Director role at Coburg parkrun to Marcus last year, I’ve been taking the opportunity to enjoy being one of the parkrun adventurers and have been ticking off my Nearest Event Not Done Yet (NENDY) as time permits.

Visiting local parkrun events is a great way to experience parkrun and to discover hidden gems in our neighbourhood (Newport Lakes parkrun comes to mind).

If you want to find your NENDY, install the Running Challenges plugin in Firefox or Google Chrome on your computer (I haven’t found an iOS version) and set your home parkrun in the preferences.


The Running Challenges extension displays a whole host of fun statistics about our parkrun participation but I’m finding the NENDY to be the most enjoyable to chase!

Improving Online Security

The revelation of the “Collection #1” data breach highlights, once again, that we do a poor job of keeping ourselves safe online. January is a good time for setting personal goals and if I could recommend one goal for you, it would be to improve your online security. I’m not a security professional but my work involves online identity management and I find our community’s behaviours fascinating. This blog post contains free, unsolicited advice, so you are guaranteed value for money but do give it some consideration.

Get a Password Manager

Password Entry

First thing’s first… get yourself a password manager! No, really. I used LastPass for many years and found it sufficient but a couple of security issues gave me pause for thought. I recently switched to 1Password (the migration was very straightforward) and have been impressed with its slick user interfaces and its Watchtower functionality for highlighting where I may be vulnerable online.

I have literally hundreds of online accounts, many of which are years old and I have no idea how secure my credentials are with those services. I know from services such as Have I Been Pwned (HIBP) that some of these services have stored my credentials in plain text and those credentials have subsequently leaked, so I treat all online services with suspicion. Keeping track of all these accounts is only manageable with a password manager.

Use Strong, Unique, Memorable, Diceware Passphrases Locally

There are some places where password managers don’t work, such as unlocking your computer’s operating system and getting into your password manager. Since your online security is only as strong as the weakest link, these logins need to be strong enough to keep others out and memorable enough to let you in!

I’d like to see the word “Password” eradicated from all authentication setup scenarios as it encourages poor security choices. Passwords are guessable by other humans and are quickly found by computer algorithms. Where you see this word, read it as “pass phrase”.

The diceware method of creating a sequence of words makes for strong login credentials. To make these words memorable, compose an image in your head that joins the words together. The XKCD “correct horse battery staple” comic is a good illustration of this concept but please don’t use “correct horse battery staple” as your pass-phrase, it has already been breached!

Use Long, Unique, Random Passphrases Online

Your password manager doesn’t care for the legibility of your credentials, so turn up the strength of your “password” to the maximum. 1Password and LastPass offer generators that will do the heavy lifting for you.

Password Generation

Sometimes websites, even ones I’d expect to know better, such as those belonging to telecommunications companies will tell us that our generated passwords are “too long” or “contain invalid characters”. I’m pretty certain that these are storing our passwords in plain text and are therefore insecure. Which is the perfect segue to the next piece of advice.

Never Reuse Credentials

It’s safe to assume that your credentials from at least one online service will be leaked at some point in time. See HIBP, it probably has been already! When this happens, those credentials are likely be used in credential stuffing attacks. If an attacker gets hold of your credentials for, say, your favourite band’s online discussion forum it would be bad for them to impersonate you on that service but potentially far worse for them to impersonate you using the same credentials to log into your social media or email service.

Enable Two-Factor Authentication (2FA)

Multi-factor authentication (MFA) is not available everywhere but it is available on many major online services. The site Two Factor Auth (2FA) keeps a great list and provides us with ways to contact those who don’t yet offer 2FA.

I remember reading the real life horror story Hacked! in April 2012 and sitting up late that night enabling 2FA on a bunch of accounts. At the time I used the popular Google Authenticator application to manage my time-based one-time passwords (TOTP) but have since switched to using Authy, which makes moving from one mobile device to another much more convenient.

The only times I have ever found 2FA to be an inconvenience are those when my browser has crashed or Google has logged me out in the middle of a Hangout (or “Meet”).

I don’t consider SMS-based MFA to be secure due to the risk that SMS messages may be intercepted or redirected so prefer TOTP or Universal 2nd Factor (U2F) devices, where available. When presented with backup codes, keep these safe as you would your birth certificate, passport or driving licence.


Please keep strong, unique pass-phrases in a password manager and secure your email and social media accounts with 2FA.

Let me know how you go!

On meaningful error messages

Today I was trying to make a simple change to a Git repository, privately hosted with GitHub. I cloned the repository, made the change and went to push it up for review. The git push didn’t succeed and I thought maybe I had fat fingered the remote URL when I cloned the repository (but that couldn’t be right because I’d successfully cloned the repository, right?). I tried removing and re-adding the remote but still “no dice”, as they say.

See if you can understand my initial confusion…

% git remote -v               
origin    https://github.com/our-organisation/some-repository.git (fetch)
origin    https://github.com/our-organisation/some-repository.git (push)

% git fetch -v origin
From https://github.com/our-organisation/some-repository
 = [up to date]        MO_Adding_ECS_configs             -> origin/MO_Adding_ECS_configs
 = [up to date]        update_gems                       -> origin/update_gems
% git push -v origin
Pushing to https://github.com/our-organisation/some-repository.git
remote: Repository not found.
fatal: repository 'https://github.com/our-organisation/some-repository.git/' not found

[Some names may have been changed.]

What do you mean, “Repository not found”? Look harder! After spending some time troubleshooting and getting increasingly frustrated, I sought the counsel of my colleagues. Some of my colleagues helpfully suggested I try an SSH remote. So I do this…

% git remote add ssh git@github.com:our-organisation/some-repository.git

% git fetch ssh
From github.com:our-organisation/some-repository
 * [new branch]        MO_Adding_ECS_configs             -> ssh/MO_Adding_ECS_configs
 * [new branch]        update_gems                       -> ssh/update_gems
% git push ssh     
ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

“The correct access rights?”

Well why didn’t you say so?

It’s worth noting at this point that while the SSH failure mode in this scenario is slightly better, I use HTTPS remotes over SSH because GitHub recommend HTTPS over SSH.

I understand that GitHub uses “Not Found” where it means “Forbidden” in some circumstances to prevent inadvertently reveling the existence of a private repository:

Requests that require authentication will return 404 Not Found, instead of 403 Forbidden, in some places. This is to prevent the accidental leakage of private repositories to unauthorized users.


This is a fairly common practice around the web, indeed it is defined:

The 404 (Not Found) status code indicates that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

6.5.4. 404 Not Found, RFC 7231 HTTP/1.1 Semantics and Content (emphasis mine)

What makes no sense to me is when I am authenticated with GitHub using a credential helper and I have access to that repository (having successfully cloned and fetched it) that GitHub would choose to hide its existence from me because of missing write permissions. That’s pretty terrible user experience and cost me a whole bunch of time when I could have been doing more valuable work.

Checking https://github.com/our-organisation/some-repository/ using a web browser confirmed that I didn’t have write permissions to the repository. Our team’s GitHub administrators were able to grant my team write access in a short time and I was able to push the branch up. When I did this I got a custom success message:

% git push        
Enumerating objects: 23, done.
Counting objects: 100% (23/23), done.
Delta compression using up to 4 threads
Compressing objects: 100% (14/14), done.
Writing objects: 100% (16/16), 2.07 KiB | 706.00 KiB/s, done.
Total 16 (delta 12), reused 0 (delta 0)
remote: Resolving deltas: 100% (12/12), completed with 6 local objects.
remote: Create a pull request for 'paj/my-branch' on GitHub by visiting:
remote:      https://github.com/our-organisation/some-repository/pull/new/paj/my-branch
To https://github.com/our-organisation/some-repository.git
 * [new branch]        paj/my-branch -> paj/my-branch

I like this success message. It’s helpful.

Developers: Failures happen, plan for them and make your error messages as helpful as your success messages!

Dingo Dash

Over the last few years I’ve come to really enjoy running. I typically run three or four times per week with one of these runs being a long run, at least 21.1km. After my first marathon I agreed with my family that I’d not spend such of my weekend doing long runs and formed a habit of getting up very early on a Friday morning for these runs, usually with a couple of my Merri Creek Running Club friends.

This week, we’ve driven from Melbourne to Yulara in the red heart of Australia. I got out for my habitual runs on Monday (in Adelaide) and Wednesday (in Coober Pedy) and have been looking forward to my Friday Long Run from the tourist resort to watch the sunrise over the majestic monolith that is Uluru, enjoying twenty-odd kilometres of serenity along the way.

The run started off well, a little earlier than planned, at about 5:15am and I saw a warming campfire at the edge of the resort. It was about 8°C, still and dry: perfect running conditions! As I hit the Lasseter Highway, the soft street lighting of Yulara faded into darkness and a spectacular starscape opened up in front of me.

Running alone in the dark was a strange experience. My head torch illuminated enough of the road ahead of me to pick out any unevenness in the road and my Million Mile Lights ensured I was visible to the couple of passing vehicles along the way but I had no peripheral vision.

Approximately 2.5km into my run I thought I heard a tapping sound behind me. I turned around and the light from my head torch bounced off the eyes of a small animal on the other side of the road. I quickened my pace and heard the animal do the same, so I stopped. And it stopped. I turned and was faced with a black and tan dingo. Aware that most wild animals are as afraid of humans as we are of them, but equally aware that I could be on the menu, I motioned to the animal that I intended to carry on in the direction of Uluru and that I would leave them in peace. The canine didn’t take the hint and continued to pursue me from the other side of the road. The beam from the head torch seemed to act as a nonphysical barrier beyond which the creature wouldn’t step, but I didn’t get the feeling that it offered any real protection. I continued to trot along the highway with the torch now in my hand to keep the dingo at bay. It followed along on the other side of the road keeping parallel with me for about a kilometre but I become increasingly aware that my long run was not going to go anything like I had planned, I couldn’t take my eyes off my new companion for long enough to look at my running watch, but I knew my heart-rate was elevated and my pace was erratic, there was little chance I was going to make it to meet my brother-in-law at the Sunrise Viewing Area at the time we’d agreed last night.

And then, after about a kilometre, the dog moved in front of me on the same side of the road, facing me. I stopped and slowly crossed the road. It crossed the road too, still facing me. I said, “this is clearly your territory, I’m going to go back to my home now and you can go back to yours!” and I turned slowly and began to walk back to the resort, keeping the torch beam on the dog.

It followed me.

I part walked – part jogged back along the Lasseter Highway, using the beam to keep a distance between us. A vehicle approached, heading for Uluru-Kata Tjuta National Park and I warned the dog to get out of the way. Despite being scared of this animal, I wanted no harm for it. After the vehicle passed the dog sat facing me and growled a deep, menacing growl. I became increasingly concerned for my safety and tried hard not to show any signs of fear. I again told the dog that I was going back and it should go on its own way but it remained unconvinced and continued in pursuit.

It wasn’t long before the street lights of the resort at Yulara welcomed me back into civilisation but the mutt was undeterred by these and followed me regardless, getting closer and closer. A delivery vehicle went past and the driver must have seen me shining the torch on the dingo. I’m not sure what they were thinking but they tooted their horn. After the van had gone, I was left face to face with the seated dingo. I backed away slowly.

A tour bus approached and the driver saw a similar sight to the delivery driver but slowed down. In a moment, I flagged the coach down and walked slowly over to the passenger door, torch beam on the animal at all times. The driver kindly opened the door and invited me aboard. He said he’d seen that dingo a few times over the past few weeks but never on the resort ground, when he’d seen me there he knew I was in trouble! The driver was picking folks up from the first hotel on the resort for a sunrise tour of the national park and advised me to tell the hotel receptionist that there was a dingo on the resort so that they could “deal with it”. I couldn’t find any staff members at the reception area and after the coach load of tourists were on their way for a fun morning, I sent my brother-in-law a message to say not to expect me at Uluru and headed off back to our hotel. As I left the first hotel’s car park and started to cross the road, I heard familiar paw-steps across the road. I shined my torch and the eyes of the hound reflected the light back at me. I headed straight back through the brightly-lit car park into the reception area. This time there were a few people in reception and two behind the counter. I made my report to one of these who said they’d inform maintenance and I had a drink of water before setting off in the other direction to make my long, illuminated way back to bed.

I was utterly, utterly unprepared for what I might meet in Outback Australia and will certainly not be making the mistake of attempting to run alone in the outback again, I can tell you! Still, I’m unharmed and have what I think is a great holiday tale. I’m looking forward to running with my mates back in Melbourne in a few days and continuing my training towards my fourth Melbourne Marathon on 14 October.

← Newer Page 1 of 12