Why do you document your trips like this?
I do this for myself. As a side effect, it's sometimes useful for other people, but to be clear, I do this for myself, not for you.
It isn't optimized for viewing by random strangers or friends and family. If I was optimizing for that, I'd cut out a lot of pictures and maybe some of the commentary as well.
I know it's too long and cluttered and uncurated.
There are a few reasons for this:
- I'm growing old and I want to remember things, so this is my personal memory aid.
- I often want to show someone something specific like a particular motorcycle I saw in a museum, so I want access to those pictures in a way that I can find them with a moment's notice. No good if I curated that picture out as not in the top 20 most interesting pictures of that day.
- I like scrolling through my old stuff, and it's all meaningful to me.
- I'm an amature programmer and haven't figured out how to do everything I'd like to do.
- I like writing my own stuff that does exactly what I want and don't like using professional stuff that does stuff I don't understand.
How do I build this website?
I've heard this question or varients a few times, so I'll answer it here.
What software do you use to make these pages?
How do you record your trips?
Generating the HTML
I write all my own code and write this site in raw HTML. But I also
have a lot of python scripts that take care of some of the grunt work
like putting all the pictures from a day into a page for the day,
generate thumbnails, recode videos, etc. Unfortunately, that code
can't do minor reordering to put like pictures together, add captions,
figure out the best places to break lines, add headings, etc. That
stuff usually takes me a day or two to add / clean up. Also
unfortunately, my code sometimes makes mistakes like treating videos
imported from an iPhone as if the phone wasn't lying to me about video
aspect ratio for example. So I usually have some stuff to manually
redo and that also takes a bunch of time.
Navigating during rides
Google Maps on Android for navigation
I like Google Maps for navigation. I find it consistently has the
most accurate street data and estimates for how long a ride will take.
If it won't route me through, probably the road is closed. It rarely
takes me to closed gates, at least compared to the alternatives I've
tried. A painful thing about Google Maps on Android is that it is
such a poor shadow of Google Maps on Desktop. You can't drag the
route around. You can't go back to an earlier route. It's so easy to
lose your route. Not easy to explore alternatives.
I usually plan my routes on Desktop. Change all implicit route
drags to explicit waypoints (because the Android app doesn't replicate
those), then send the route to my phone. On the phone, I load the
route, then save it to my phone "desktop" so I can get it back again
when (not if) I lose it by accidentally hitting the back button or
having the phone just close the app, e.g. overnight while charging.
Always start the route "from my current location" rather than from
a waypoint. Google won't start navigation if you are too far from the
initial waypoint.
I have 3D printed a phone cradle for my motorcycles. This cradle
has an integrated wireless charger so I can leave Google Maps running
all day and still have some battery left. It also lets me easily grab
the phone for a picture and drop it back in the cradle, sometimes
while riding. Especially when taking videos while driving, it's
important to be able to easily replace the phone with one hand.
OSMAND on Android for navigation
OSMAND has some really good map data based on Open Street Maps, but
it's inconsistent and the route calculation is slow and often makes
some poor choices. That said, it does work, even where there is no
network connection. It's a good backup to Google Maps, but when
they disagree, go with Google Maps,... unless you don't like unpaved
roads. Google will route you on an unpaved road where OSMAND will
respect your wishes. OTOH sometimes a couple of km of good quality
dirt road is a lot better than the 100 km alternative detour.
I like to keep both OSMAND and Google Maps up for comparison.
You know what they say: "When you have one thermometer, you know the
temperature, but when you have two thermometers, you have the
beginnings of a distribution." When OSMAND and Google agree, I have
comfort. When they disagree, the situation warrants a closer look.
Recording GPS track logs
I like the Android app OSMAND for offline mapping and GPS recording.
It is very reliable and seems to keep recording even when the OSMAND app crashes.
At the end of the day, I download the GPX file to my laptop.
Google Maps location history also provides a log of where I went if
I had navigation up all day. But I don't know how to download a high
resolution track log from Google Maps. Nevertheless, it's really nice to have
a redundant copy of my route when *stuff happens*.
Processing GPS track logs
I wrote a python script that reads
a GPX file and generates a set of drawing commands to draw the route
on top of a map captured from a Google Maps screenshot. That program
also draws circles on the map everywhere I have a picture with LAT,LGN
in its JPG EXIF data. That program also analyzes the track log to
figure out where I stopped and for how long. The stats from those
processed track logs are super useful for understanding how I ride
solo and in groups. With the stats, I can reliably plan future trips
that aren't too long and stressful. Especially important when
planning rides with friends and family.
Other utilities
picture to map URL
jpg2gps.py
img_name_to_google_maps_url.py
Something I use all the time is a script that given a picture file name, finds the picture, extracts the GPS location info, and launches a web browser to that location on Google Maps.
This answers the question, "Where was I when I took this picture?" Oh, that was the view from behind hotel xyz. Or, that was just after crossing the border into Hungary.
rotate.py
Rotates images and video.
extract_vid.py
A crude video editor that just extracts a chunk from the middle of a video (i.e. trims off the beginning and end).
media_time.py
sort-by-media-time.py
Gets the UTC time of a media file (jpg, png, mp4, etc). It knows about various media sources like old Android phones, newer Android phones, some iPhones, screenshots, photos, videos, etc.
It's remarkably difficult to sort a bunch of screenshot, photo and video files into temporal order. This makes my best guess.
push-fuz-moto.py
Pushes the local copy of my website to the server.
rename_screenshot.py
Renames a screenshot from local time to a command-line supplied timezone offset UTC time since the png file format doesn't allow for storage of capture time and the filename isn't consistent across various versions of Android.
shrink-video.py
Recodes huge videos into something that my webserver can afford to serve. Reduces frame size and increases compression as specified.
process_track_log.py
Analyzes a GPX tracklog and outputs an HTML table of breaks and rides and annotates a map image file.
build-trip.py
Makes a first draft of a site for a multi-day trip generating top.html and all the per-day nn.html files while making all the thumbnails and recoding the videos.
muck_lat_lon.py
Takes a set of lat,lgn,comment tuples and generates a google maps URL for a trip and a GPX file for OSMAND.
Also outputs text with degrees-minute-seconds format for brain-damaged programs --- I'm looking at you Garmin.
make-calendar.py
Makes a calendar.png file for the weeks containing the trip.
list_all_pics.py
Finds inconsistencies in my website, missing symlinks on the server, unreferenced files, missing files, etc.
Will you share?
If you want any of this code, I'm happy to share, but it's not coded to production standards and may be more confusing that useful, still it might help, but only if you are already competant enough to have written it yourself.
Just email me and I'll send you whatever you want.
Also, everything on this site is available Attribution 4.0 International (CC BY 4.0) but I don't care if you do the attribution part.
Creative Commons doesn't have a license that allows unlimited reuse and remixing without attribution, but that's what I mean.
You are free to:
Share — copy and redistribute the material in any medium or format
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
I, the licensor will not and cannot revoke these freedoms as long as you follow the license terms.
There are no license terms.