CORGI: A Flask App

Author: Ari Cooper-Davis

Date Published: Feb 4th 2020

As part of my many forays into interesting fields in computer science I have recently come across Flask, an open source web application framework for Python. End-users don't download want to have to download python scripts, in fact they don't really want to have to download an application at all. Flask web-apps enable you to provide end-users with an interface to your code, so that they don't need to download or run anything to be able to use your tools.

I'm teaching myself this, in the long run, so that I can develop user-interfaces for forecasting and modelling tools as part of my research, but for the moment I'm just having fun.

CORGI: Circular Orienteering Route Generation Interface

CORGI generates circular running routes, with the option to locked them to footpaths/roads. Find out more by checking out the GitHub repo.

I'm not much of a runner, but I do enjoy heading out a couple of times a week to stretch my legs. I know the city quite well by now, and have established some favourite routes avoiding the worst of the air pollution hot-spots (see left).

However, sometimes I want to have a bit of an explore and practice my navigation, so I'll head off in a random direction and just run around. This can be a bit of a game, trying to never retrace your steps, but it can also be infuriating if a path doesn't go where you expect, or you cross over the river and have to run for 2 miles to get to the next bridge.

This is where CORGI comes in.

CORGI generates circular running routes by distributing checkpoints around a map. Your route then becomes a bit like an orienteering game - you have to link up the points to complete your run.

The number and spacing of the checkpoints is customisable, and you can choose to lock them to public road/path features pulled from Open Street Map so that you know you can get to them. You can even choose to automatically plot a route between them for you to follow.

At the moment all this legwork is performed server-side by the Flask app. This results in quite a bit of load on the server, which is why I don't have one embedded here for you to try out. Instead, I recommend you try it yourself by downloading the script and setting up a local version for yourself. It's super quick and easy, and instructions are available on the GitHub repo.