Chris Ferguson #portfolio

Daft Stuff I've Built: No. 3, Sprint Start App

For this one we're going back to 2014...

I used to be a 100m runner. Due to a need to keep to my schedule flexible I frequently used to train alone. This was fine for most sessions, but became a problem when I wanted to practice my starts. With no one around to set me away - what was I supposed to do?

An App that could go through the stages of Sprint Start for me could be the answer - For those unfamiliar with track races, those stages are: "On Your Marks", "Set" and "Go"/a gun going off.

I did some research, downloaded a few of the existing Apps and encountered a number of problems:


I therefore set to work building my first ever app. As I am an Android user, I decided I would take the path of least resistance - bypass the Play store and just create an SDK to pop on my phone. Also, more experienced with web development rather than native apps, I took the lazy option and just threw together a bunch of JavaScript in a couple of WebViews into an app (no learning Java for me!).

Nowadays, I'd probably just create a PWA to achieve this, but back when I created this beast PWAs weren't a thing! To be honest, neither was a reliable mobile internet connection either.

Randomisation vs. Realism

The amount of time between the stages of the start would need to be different every time - otherwise I would just end up predicting when the gun would go off, and I wouldn't get any better at reacting to it.

The first version I built only allowed for random intervals (within set limits) but this didn't feel right when I tested it. It was at the next track fixture that I realised the distribution isn't actually random - and would be likely distributed around a certain period of time. I therefore added a "Simulation" mode so athletes could more closely get a feel for the time periods a real-life race official would use. To achieve this, I decided I would gather data on the real-life timings between "On your marks", "Set" and the gun, and feed these into the app. I would do this by timing from videos of world-class races, and timing the starts at local and national fixtures. Despite my best intentions, I only got around to gathering data on about 10 starts - anyway, it worked as a proof-of-concept!

Interestingly, my training tended to utilise both modes:

As a side-note: Random was a lot of fun when using it as a group of athletes - especially watching everyone try to stay still during an unrealistically long pause. Well I thought it was fun anyway.

"Me at the end of a 100m race."
Me at the end of a race. Pour one out for my fitness.