W H U F U ~ "Where the f--- is that?"

This site is the results of my obsessive documentation of my road trips for the last eight years. I have kept a mileage log forever, since the 70's, but it wasn't until the technology developments of the early 2000's, when I started travelling with my laptop and a digital camera, that I got the notion to put together an app to try to convey the experiences.

  • Here is the first try from 2000.
  • Here is the second try from 2002.
  • Here is the massive third try. It was at the present URL until March 2017, when I moved it down a directory and installed this, the mobile-friendly WHUFU.

This website is the fourth try ... really the third try gutted and re-written to be more mobile-friendly and I hope, more people-friendly.

  • planning a trip:
    For short, familiar trips, I just "go". But for longer trips to unfamiliar places I rely on three tools:
    1. Google Maps - mostly the directions feature which tells me miles and hours to get from one spot to another
    2. a spreadsheet - just three columns really - place, miles, hours
    3. My trusty Allstays camping app
    I decide where I want to go, use the maps directions feature to determine what a 150 mile (2-3 hour) chunk of that trip is. On a well-run trip, that's how I want to roll - sleep late, take my time over coffee/breakfast, then do a little travelling from 1-ish to 5-ish, then stop early with enough time to enjoy whatever place I find myself in.
    I use Allstays to find a plausible place to camp around there. If there is none, I adjust widen the search until I do find a plausible looking place. Enter into the spreadsheet where I started and where I think I'll end up and the miles and hours to get there.
    Repeat, with that endpoint as the next day's starting point, for as many days into the future as I need.
  • tripping
    On a perfect travel day I have arrived at my campground mid-afternoon. I crack open a celebratory beer and crack open the laptop for a little whufuing - creating the content for this app.
    • In the Spot Manager I add a new spot, or if I've been here before I add a new day to an existing spot.
    • I enter a new row for today in the trip spreadsheet, including the spot id and the blog post id. Transcribe mileage from my notebook every few days. See Nerd Notes below.
    • Update the blog, with at least the shortcodes for this date and for this spot. How much actual writing depends on my time and inclination.
    • Wrap all this up in time for a nice hour or two evening exploration of wherever I am, ideally with a nice sunset somewhere. If I have time, I eat before, but usually I end up eating in the dark, since the magic time around sunset is too valuable to spend "in the kitchen".

    Beavers are gonna build dams, programmers are gonna program.

    I was a professional computer programmer all my adult life. By the mid-2000's I still had the skills, still liked to do it, but lost the ability so show up at a job interview and pretend I cared about somebody else's stuff enough to get the job. I made the classic time-money tradeoff and chose to have more time and less money. Fiddling endlessly with the code and content for this site turns out to be what I do to make myself happy in retirement. A little writing, a little picture editing, a little coding, map making. Different strokes ...

  • design:
    Cindy de Leon designed the nice WHUFU logo in the header. Don't hold the colors against her, they are mine.
    Elton de Leon kept me focused on designing for mobile and using Bootstrap, and most importantly was someone to talk to about the whole thing. I'm very glad I stuck with Bootstrap instead of reverting to 'roll my own'. Thanks Elton!
  • videos:
    I play videos with embedded YouTube. They are all in this playlist.
  • maps:
    I render the maps with Mapbox. It's really cool.
    • The overnight spots are plotted from GPS information in the WHUFU database.
    • I used to enter routes manually using Mapbox or Google Maps. I used Google forever, then I used Mapbox, then I discovered how use Google Directions correctly. Now, using Directions I make better maps in a fraction of the time.
    • Save the Directons map as KML, then Mapbox makes it very easy to render either JSON or KML geodata into a layer.
    • A few trips don't have a map. For these I connect the overnight spots with straight lines ... better than nothing I think.
  • weather:

    I grab weather info for Spots from Weather Underground. I have to do stupid coding tricks to not invoke it on a simple Spot page hit, because stupid bots blow my access limit. You have to hit the Weather tab to request the weather.

  • stories:
    I write my stories as Wordpress blog posts.
    • The good news is that I run a server and MYSQL on my laptop, so I can write at the campground without having to be connected to the internet.
    • The bad news is that I must therefore manually export them from my laptop to the server Wordpress in order to share them with you. This is technically the ugliest part of the process. Wordpress export/import is not awesome, and has no facility for updating. To my knowledge the only way to update is to Copy All from the laptop editor and Paste All into the server editor ... weak. If you know a better way, please tell me about it with the Feedback button in the footer below :)
    I have a suite of Wordpress shortcodes for grabbing pictures and day descriptions from WHUFU and inserting them in posts. The day name section headers are done by a shortcode which generates a "name" anchor tag so WHUFU may link directly to the part of the post for that day. I crank up Wordpress inside WHUFU any time I need its content. Wordpress is a lot of code, so there is sometimes a noticeable pause when viewing a Story page.
  • Internal techie stuff:
    • I use an ancient templating class called template.inc. I’ve built my own set of classes around it, mostly to encapsulate it's non-user-friendly looping conventions. It does pretty much everything I need ... as long as I don't need anything too complicated :)
    • All the responsive behavior is from Bootstrap. It's annoying, but pretty powerful.
    • Bootstrap has eliminated the need for much in the way of custom JQuery, but there's a little in here, including some JQuery Ajax to to as-needed queries on the Search page, which I'm very pleased with.
    • The social media symbols in the footer are from genericons, which are very cool.
    • The WHUFU icon is the Microsoft Registry Editor recolored with the WHU palette. It has nothing to do with WHUFU, but it's a really strong graphic in a style quite similar to a design I did decades ago - that's my excuse anyway....
    • The WHUFU code is a github project. Without the database, pictures, maps, and blog posts you can't really do much with it, but it's there for all to see.
    • While travelling, I maintain a mileage log spreadsheet in Numbers (the poor man's Excel on Mac). Along with odometer readings and place names and notes it has columns for the blog post id for that day and the Spot id for where I stayed. Eventually I export the spreadsheet as a CSV file, then run a little PHP program to read the CSV and create day records in the database. This creates another updating issue. I tried reading the rows directly from the CSV file to avoid that but it was not cool.

      The Trips table and the Days table are the backbone of WHUFU. Everything with a date - pictures, stories, maps - are interconnected through those tables.

    • I have an extensive set of back-end tools for entering all the data for WHUFU:
      • A Spot manager app for entering and editing Spots and the different times I have been to a spot (Spot Days).
      • I upload pictures and videos into iPhoto. I use Mac Preview for the initial winnowing. After I am down to just the pictures I want to show in WHUFU I run a little UNIX script based on the excellent exiftool to resize them to fit in an 800px square and to cram a thumbnail into the EXIF data.
      • The pictures for each trip go into a unique folder. There are no thumbnail folders, since the thumbs are in the EXIF!
      • When I have exactly the pictures I want in the folder for that trip I run the Picture entry app on that folder. It reads the image names and creates a database record for each.
      • Once pictures are in the database I run a Picture captioning app, to label them and assign keywords.
      • For Videos I have another exiftool-based script to read the EXIF data and build a table record which links to the video via its YouTube token.