Friday, July 27, 2018

It Counts! The Trip Timer Lives

I'm closing in on a functional trip timer. I've got the hardware and software more or less figured out. All that was left to do was write the code to implement a stopwatch like display.

And without further ado, here it is:

/*
 * See:
 *  https://raw.githubusercontent.com/adafruit/Adafruit_ILI9341/master/examples/touchpaint_featherwing/touchpaint_featherwing.ino
 * https://learn.adafruit.com/adafruit-2-4-tft-touch-screen-featherwing/resistive-touch-screen
 */
 

#include <Adafruit_STMPE610.h>
#include <SPI.h>
#include <Wire.h>      // this is needed even tho we aren't using it

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ILI9341.h> // Hardware-specific library
#include <Adafruit_STMPE610.h>

#define STMPE_CS 32
#define TFT_CS   15
#define TFT_DC   33
#define SD_CS    14

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);


long started = millis() / 1000;

void setup(void) {
  Serial.begin(115200);

  delay(10);
  Serial.println("Timer Time!");
  

  if (!ts.begin()) {
    Serial.println("Couldn't start touchscreen controller");
    while (1);
  }
}

void loop(void) {
  long remaining = (millis() / 1000) - started;
  int hours = remaining / (60 * 60);
  remaining = hours == 0 ? remaining : remaining % (hours * 60 * 60);
  int minutes = remaining / 60;
  remaining = minutes == 0 ? remaining : remaining % (60 * minutes);
  int seconds = remaining;

  int fg = textFg(hours, minutes, seconds);
  int bg = textBg(hours, minutes, seconds);
  
  tft.begin();
  tft.setRotation(3);
  tft.fillScreen(fg);
  tft.setCursor(10,(tft.height() / 2) - 30);
  tft.setTextColor(bg);
  tft.setTextSize(7);

  tft.print(hours);
  tft.print(":");
  if(minutes < 10) {
    tft.print("0");
  }
  tft.print(minutes);
  tft.print(":");
  if(seconds < 10) {
    tft.print("0");
  }
  tft.print(seconds);

  delay(750);
}

int textFg(int hours, int minutes, int seconds) {
  int red = minutes/2;
  int green = 61 - minutes;
  int blue = 31;
  return ((red) << 11) | ((green) << 6) | blue;
}

int textBg(int hours, int minutes, int seconds) {
  return ~ textFg(hours, minutes, seconds);
}

And here's the timer doing it's thing:

A few notes on the code:

1. Having the code from my micro:bit prototype was a big help. I'd already figured out a number of math and formatting challenges, and was able to reuse this code.

2. I used this sample as the basis for my code. It told me that I needed the GFX, ILI9341 and SMPE610 libraries, and how to initialize them to properly drive my 2.4 TFT FeatherWing screen. I was eager to avoid the type of confusion I ran into when I mixed up the ESP8266 with the ESP32.

3. You can see I'm deriving the background and text color from the current value of minutes. This is my attempt to make the timer gracefully fade from one color to another throughout an hour. It works, though the color choices need to be smarter.

4. The timer seemed to work great, but when I'd come back after a few hours it had reset itself. The problem was that I was relying on a call to micros() which rolls over every 70 minutes. I switched to calling millis which resets every 50 days.

Up next, I need to take this guy for a road test and see how it does in the car. Then I need to build an enclosure to keep my new baby safe. And then I believe I'll be able to call this complete!

Wednesday, July 25, 2018

Software Challenges to Match My Hardware Frustrations | Errors Flashing an ESP32 Chip

With my hardware woes out of the way, I thought I was home free to build out my custom Trip Timer. Eager to jump in to coding, I did a quick Google search to learn how to program my Huzzah Featherweight chip and found myself back at Adafruit.com.

I carefully walked through the steps of setting up the Arduino IDE and had no problem installing the custom board definitions. It's when I went to push my code to the chip that things started failing. I kept getting messages like: "warning: espcomm_send_command: didn't receive command response" followed by a FLASH_DOWNLOAD_BEGIN fail message.

I Googled around and other folks had this issue, but there was no consensus as to how to fix it. Maybe it was a hardware issue? Maybe the instructions were out of date with the components?

Per the Adafruit instructions, I tried manually connecting to the chip using Putty, but that failed too. Rather than seeing a Lua prompt, I saw nothing but gibberish. After multiple attempts, I tried using the baud rate of 115200 versus the suggested 9600. I finally saw that the chip was scanning for WiFi - proof that the chip wasn't fried. Though it was acting nothing like the instructions I was reading.

Was it possible that the firmware that came with the chip was dramatically newer than the instructions expected? So new in fact, that even the IDE couldn't work with the chip? That didn't make sense.

I continued poking around, even going so far as flashing a new image to the Huzzah. That only made things worse: instead of seeing an intelligent WiFi scanning message when I connected to the chip from Putty, I saw scary looking boot error messages. I'd clearly made things worse.

How could the trivial task of pushing a 'Hello World' program to this chip be turning into such a nightmare?

I don't recall the page that triggered my epiphany, but man, what a moment of clarity. My problem: when I did my initial search for instructions, I came across those intended for the Feather Huzzah ESP8266. From then on, I dug deeper into setting up and running the ESP8266. The problems is, I'd purchased a Feather Huzzah ESP32. Despite the similar sounding names, they are completely different chips, with completely different instructions. I was feeding my German speaking chip Japanese, and it wasn't having it. No wonder everything was broken.

I carefully installed Arduino support for ESP32 chips. This took two attempts: the first time I did it in cygwin, but the installed binaries didn't have the right permissions. I then re-executed the process under Powershell, and it finally worked.

Using this Hello World example, and this connect to a network example, I verified my chip was working just fine.

Next up, I need to figure out how to interact with the screen. You can be sure that I'm going to pay quite a bit more attention to the specifics of that hardware.

Man it feels good to be back on track!

Tuesday, July 24, 2018

More Hardware Frustrations, and a New Favorite Word

After my last misadventure soldering components to make a trip timer, I picked myself up, dusted myself off and ordered the proper tools required to finish the project.

A few days later, I plugged in my new soldering iron and went to work carefully building the hardware.

It wasn't long before I had to waive the white flag again. True, the tools I ordered from Adafruit were far more precise, but I was still producing sloppy soldering joints, and the project was quickly sliding downhill. I'm sure most of this is due to lack of practice, though I wonder if a different soldering iron tip or wire could have improved matters. Needless to say I was annoyed and disappointed that I couldn't pull off the seemingly simple task of soldering a dozen or so connections. Ugh.

After stepping away from the project for 24 hours, I returned to Adafruit.com to do further research. It was there that I discovered my new favorite word: Assembled. As in, Assembled Adafruit Feather HUZZAH with ESP8266 With Headers. For a few bucks extra I could buy a board similar to what I had been working with, but with the pins soldered in place. Looking in the screen section of Adafruit's site, I found the TFT Featherwing 2.4" 320x240 display. It too was "fully assembled!" I smiled at my good fortune of discovering these new components, and eagerly checked out.

When the box showed up at my doorstep, I tore into it and carefully took out the chip and screen. I lined the pins of the chip up with the socket on the screen and gently pressed. Just like that, I had successfully assembled the hardware. Whooo!

Aren't those components beautiful? Now I just need to program them, a task I'm eagerly looking forward to.

One of these days I'll learn the whole soldering thing. When I do, I'll gain access to a wider variety, and cheaper set of hardware options. But for now, I'm excited to put my 'assembled' hardware to good use.

Monday, July 23, 2018

Art with A: Making Wire Bracelets, and Practicing our Change-the-World Skills

While hanging with Aurora this past weekend, I noticed she had a wire bracelet on and asked if she had made it herself. She had, and she was more than willing to teach me how to make my own. That's a good thing, because I love finding ways to upcycle some of the hundreds of feet of Ethernet cable I've got lying around. Aurora patiently walked me through the process of measuring and wrapping the wire. When she was done she had another suggestion: why don't we shoot a video teaching anyone interested how to make the bracelets.

Given my preference for having kids create digital content over simply consuming it, I was overjoyed with the idea. I grabbed my phone, hit record and Aurora started her narration. Below is is the video we made.

As a first foray into the world of How To Videos, I think we did OK. Next time I'll pick a spot that isn't adjacent to her brother actively using his super-hero characters to save the world from invading aliens. But I have to give credit to Aurora, she was a real pro: even with all the background noise, she kept her composure.

Mostly, this experience gives me hope. To hear a child suggest hey, let's help others is a beautiful thing. It shows that kids can appreciate the power of the web and how they don't have to wait to start making a difference, they can do it today.

Thursday, July 19, 2018

This Photo Sounds Terrible -- Adventures in SSTV

Slow Scan TV (SSTV) is a technique for transmitting images over a radio link. The Apollo missions used it back in the day, and radio geeks use it today. At some point, I'll have to try using my SDR dongle to pick up these transmissions.

What my caught my attention about SSTV was this video by The Modern Rogue. In it, our intrepid hosts transmit photos using a pair of cheap walkie-talkies. The main ingredient to this hack is SSTV.

SSTV is interesting because it operates at voice frequencies. That is, you can hear it. Mind you, it doesn't sound great--think fax tones or modem screeches. However, what sounds like noise to us is quite intelligible to an SSTV decoder. To see what I mean, try this: install an SSTV Decoder App on your phone, launch it and hold your phone near your computer's speaker. Then click play on the video below:

If all goes well, you should see the sound translated into an image. Here's what I received when I decoded the above audio:

That's amazing, right?

The process is admittedly fragile; here's an attempt where I held the phone at some distance from the speaker:

But still, the image is definitely there.

To complete your SSTV toolkit, you're going to want to install an encoder. Once you do, you'll be able to translate any photo on your phone into the high pitch squeals of SSTV.

I'm not entirely sure the best way to use this hack. But it's remarkably to think that if you can talk to someone, you can also exchange images.

Wednesday, July 18, 2018

Just Write | A Web App That's Just About Implemented

I've made another round of changes to my Just Write: Morning Pages web app. It's not functional yet, but I've solved two nagging issues:

Authentication now works. This is provided by Google's Sign-In functionality, which takes a surprisingly small amount of code to implement. Just Write now knows the name and e-mail address of the individual who's at the keyboard.

A storage strategy is now in place. Normally, I'd fall back to storing data in some AWS provided storage mechanism. But for the sake of trying something new, I'm experimenting with Flatbase: a flat file PHP storage solution. In this case, the opportunity to play with a lightweight, portable, server-less, zero-configuration storage solution makes up for the obvious lack of scalability.

With these two hurdles cleared, all that's left is to implement the storing and e-mail delivery of submitted entries. At that point, it'll be time to switch from writing code to that other stuff. What's it called? Oh yeah, English.

Check out the source code here, and play with the app itself here.

Tuesday, July 17, 2018

A Shiny, Happy Project | Prototyping a Bag Organizer with Mylar

I wanted to experiment with another bag organizer, this one optimized for my backpack. My plan was to mockup a version using primitive materials, like Tyvek or even cardboard, and then create the real thing using this model.

As I was putting away camping gear I noticed a number of cheap Mylar emergency blankets. While a high quality emergency blanket, like a Heatsheet, can literally be a life saver the traditional ones leave a lot to be desired. They're fragile, crinkly, single use and often too small.

That got me thinking: could I use Mylar as a mockup material? Instead of sewing it, I'd duct tape it together.

The short answer is yes, Mylar makes a passable mockup material. I wouldn't go out and buy it for this purpose, but it was nice to upcycle space blankets that won't get field use.

Using duct tape to seal the seams of Mylar also works. Actually, it works too well: once the duct tape comes in contact with the Mylar, good luck separating the two.

I created two 2x6 inch sleeves to hold my usual Man-Bag contents, and then duct taped them together:

The end result held my gear well, and fit nicely into my backpack:

I'm impressed with how tough the Mylar is. Old School space blankets, once torn, shred easily. But if it isn't ripped the Mylar seems reasonably strong. I plan to experiment with using this mockup as a finished product and see how long it lasts.

It's worth keeping in mind that a Mylar space blanket, plus duct tape is all you need for a field expedient satchel. It won't win you any design awards (or maybe it will?), but it will simplify collecting up wild edibles and other camp chores where having a bag is handy.

I'm moving the extra space blankets I have to my fabric collection; they're more valuable there than in an emergency kit.

Monday, July 16, 2018

Creepy Tendrils and Massive Blossoms - Enjoying Hibiscus

Between the alien like tendrils and the massive satellite dish styled flowers, what's not to love about hibiscus? Notably, there's scientific evidence to suggest drinking hibiscus tea lowers blood pressure.

The photos of the hibiscus plants below were taken near the US Botanic Garden, specifically adjacent to Bartholdi Park.

Friday, July 13, 2018

A Digital Packing Checklist | A Little Digital Prep Goes A Long Way

Your phone is a near infinite source of entertainment and knowledge. Yet, find yourself without signal or WiFi, and resources you've come to depend on quickly dry up. I've been refining a Digital Packing Checklist that tries to avoid just this frustration. By running through this list, I'm prepared for offline-life, wherever my travels take me (even to a signal-less Doctor's office).

  • Download Amazon Prime Videos - Nothing makes the 2 hours delay of your flight fly by quite like watching a movie. Download a number of genres and kid-friendly titles, and you'll be ready for anything.
  • Rent Audio Books from your local library - Get sucked into a story and you won't even care that your doctor made you wait 45 minutes for a 10 minute appointment.
  • Rent eBooks from your local library - Leave the headphones at home by accident? No problem, go old school by actually reading.
  • Download Offline Google Maps - Out in the boonies? With a bit of preparation, you can still have maps and driving directions. Perfect for finding your way back to civilization.
  • Download Hiking Maps - You're not going to have signal at the trail head, but that shouldn't keep you from taking a hike.
  • Download Local Geocache Details - Adding a 'treasure hunt' to any destination makes it more fun.
  • Download Amazon Prime Music - Like Prime Video, Prime Music makes it easy to have media available offline. Poll folks ahead of time for their favorite tunes to make the ultimate mix tape. Music is magic: use chill music to turn a busy train station into a serene work environment, or 80's power ballads to neutralize endless switchbacks. You're limited only by your imagination.
  • Search out interesting radio frequencies to monitor - you may hear static or you may hear interesting chatter. The latter can give you a truly unique view into your destination.
  • Setup critical Google Docs to be available offline - Google Docs are ideal for collaborating on trip plans. Take a few minutes to make sure they're marked as Offline Accessible, and you insure that no-WiFi doesn't mean no-clue.
  • Snap pics of important documents or items - Luggage missing? No problem, here's a photo of the bag right before I checked it in. Lost boarding pass, Passport, Driver's License or Credit Card? A pic of the original will go a long way to getting you out a jam. There's certainly security considerations for some more sensitive documents, but the risk of having them in the cloud for a trip outweighs the risk of relying on originals.
  • Google Translate - Download offline dictionaries to support WiFi-less language translations. Plus, it's less slimy than a Babel Fish.
  • Programming Praxis - Want time to fly by? Program it away. Cache a Programming Praxis exercise locally, and work on it using your phone as a dev environment.
  • Cache Atlas Obscura Locations - Find the quirky and unexpected in whatever location you find yourself in.

(Did I miss anything?)

I've learned the lesson over and over: spending 15 minutes running through the above checklist can be the difference between a bad situation turning good, or bad situation turning worse. And best of all, you can pack all the digital content you want and it won't make your bag heavier.

Thursday, July 12, 2018

Who needs patience when you've got data? A Data Driven DMV Strategy

When's the best time to visit the DMV? Never. Fair enough, so when's the second best time to visit the DMV?

That's the question I pondered yesterday, as I had an errand to run that required just such a visit.

I was pleased to learn that Virginia shows the wait times for their DMV locations. For example:

After an hour of hitting refresh on that page I realized that I needed a better solution. Looking at the source of the page, I see that the data is just a simple curl call away:

$ curl -s https://www.dmv.virginia.gov/data/api/v2/csc/182 |  jq . | head -5
{
  "unitId": "223",
  "parentUnitId": "16",
  "workingHoursId": "231",
  "parentunitName": "FFX North District",

Using jq I was able to put together this Unix one-liner:

$ while true ; do date ; curl -s 'https://www.dmv.virginia.gov/data/api/v2/csc/5' | \
     jq -r '.webWaitTimes | .[] |  .estimatedWaitTime + " | " + .peopleWaiting + " | " + .serviceName' ; \
     sleep 5m ; done
Thu, Jul 12, 2018 10:02:59 AM
0:35:29 | 8 | Original Driver's License/ID Card (without testing)
0:20:24 | 1 | Learner’s Permit and All Testing
0:28:21 | 2 | Driver’s License and Vehicle Combination Transactions
0:03:06 | 1 | * Replacement/Renewal of Driver’s License or ID Card, and Address Change
0:21:53 | 0 | * Reinstate Driving Privilege
0:12:34 | 2 | * Vehicle Registration Transactions, Registration Renewal, Disabled Parking Placards, Surrender Plates, Permits, and Record Requests
0:31:29 | 2 | All Title Transactions
0:21:53 | 0 | Motor Carrier
0:21:53 | 0 | Other Government Services: Vital Records, Hunting and Fishing Licenses, Boat Titles and Registration and More

This was a vast improvement over hitting refresh on a web page. Though I was curious if I could enhance this further to show the wait time trend. For that, I wrote a proper shell script. The script is below, but here's a screenshot of it in action:

I was able to annotate the wait time and number of people in line with either ^, v or = depending on whether the value is increasing, decreasing or holding steady. I didn't graph the data, but that would have been my next move.

At 3pm Shira called me to see if I'd been to the DMV yet. I asked, did I really need to go today? In a couple of days I'd have the data I needed to truly optimize what time I visited. Her response: Just. Go. Now. I did and after a mere 21 minutes of waiting, I took care of my required transaction.

This experience was a reminder that data is hiding in the most unsuspecting places. I'm not sure what I can do with this wait time information, but it seems like I should be hording it and analyzing it to tell me some greater truth.

Here's the full source code to my shell script. Hopefully you'll never need it.

#!/bin/bash

##
## What's the wait time on the DMV?
##

DATA_URL=https://www.dmv.virginia.gov/data/api/v2/csc/5
LAST_DATA=/tmp/$$.last
NOW_DATA=/tmp/$$.now
SLEEP_BETWEEN_RUNS=5m

flatten() {
  jq -r '.webWaitTimes | .[] |  .estimatedWaitTime + " | " + .peopleWaiting + " | " + .serviceName'  |
    sed 's/[*]/-/'
}

trend() {
  now=$(echo $1 | tr -d :)
  last=$(echo $2 | tr -d :)

  if [ "$now" -eq "$last" ] ; then
    echo "="
  elif [ "$now" -gt "$last" ] ; then
    echo "^"
  else [ "$now" -lt "$last" ]
       echo "v"
  fi
  
}

curl -s $DATA_URL | flatten > $NOW_DATA

while true ; do
  mv $NOW_DATA $LAST_DATA
  curl -s $DATA_URL | flatten > $NOW_DATA
  lines=$(cat $NOW_DATA | wc -l | cut -f 1 -d ' ')

  echo 
  date
  for i in $(seq 1 $lines) ; do
    now_line=$(sed -n "${i}p" $NOW_DATA)
    last_line=$(sed -n "${i}p" $LAST_DATA)

    service=$(echo $now_line | cut -f 3 -d '|')
    
    now_wait=$(echo $now_line | cut -f 1 -d '|')
    last_wait=$(echo $last_line | cut -f 1 -d '|')
    sym_wait=$(trend $now_wait $last_wait)

    now_people=$(echo $now_line | cut -f 2 -d '|')
    last_people=$(echo $last_line | cut -f 2 -d '|')
    sym_people=$(trend $now_people $last_people)

    printf "%s%s | %s%2s | %s\n" \
           $sym_wait $now_wait \
           $sym_people $now_people \
           "$service"
  done
  sleep $SLEEP_BETWEEN_RUNS
done

And a post about the DMV wouldn't be complete without at least one pic of someone doing what the DMV does best: making us wait.

Wednesday, July 11, 2018

Hot and Clumsy - Misadventures in Project Assembly

A few days ago I received the components to build a more polished version of my trip timer project. Today I spread out the parts, printed out the instructions and fired up the soldering iron.

Within 20 minutes I knew I was in way over my head.

I figured that with no experience and haphazard tools I could just wing the whole solder-the-project together step. Yeah, that's not going to happen. I felt like I was trying to perform an appendectomy with a kitchen knife. I managed to melt solder everywhere but where intended, and I'm quite sure I've damaged the boards with excessive heat.

But, I'm not giving up!

I've ordered a proper soldering iron and the recommended gauge of solder. I've got no idea if the random soldering iron and solder I have lying around the house are at all designed for this type of project. I hope not. I also ordered a second batch of components. I figure I can practice on this set and use the next set for the real version of the project.

So I stand humbled, but with the right supplies on way, I'm cautiously optimistic.

Tuesday, July 10, 2018

The Bad, The Good and The Try Next Time from our Weekend in the Woods

Here's a handful of lessons learned from our recent Shenandoah Backpacking Trip.

Room For Improvement

Beware of nonstick pots - As detailed in my trip report, our brand new non-stick pot kept sliding off our petite backpacking stove. So yeah, that can happen. Keep that in mind when you buy your next backpacking pot.

Master those flashlight modes *before* bed - we made sure that M and B had high powered flashlights. However, because we went to bed before it got dark, we didn't have a chance to experiment with them. The result: at 3am they blinded themselves with hundreds of Lumens of light, when the low powered setting would have been ideal. I used a Nitecore Tube this trip and was quite happy with it. Press the button once and you get dim mode, press it again and it's bright. So simple, you can figure it out while being half asleep.

Sporks over spoons - while prepping our trip I could only find one Light My Fire Spork. I decided it was outrageous to pay $2.00 for what amounted to a plastic spoon and brought Menchie Spoons we had around the house instead. Preparing dinner, the one Spork we did bring kept getting used. So yeah, the $2.00 Light My Fire Spork is officially worth it in my book.

It's a mistake to look at the weather and say 'surely it will be too cold for mosquitoes' and leave the mosquito coils at home. Yeah, that was me. I decided to save a few ounces of weight because obviously the forecast called for it to be too chilly for mosquitoes to be active while we were at camp. I was wrong, the weather was awesome and the bugs were enjoying it as much as we were. Shira's not letting me make this mistake anytime soon.

My SDR listening attempt was a bust - I was hoping I could use Software-Defined Radio to at least pick up NOAA weather stations, if not ranger chatter. My first attempt at this was a dud: I heard nothing but static. Perhaps I need to up my game by bringing a better antenna or at very least trying my listening experiments at a higher altitude.

What Worked

The SOL Escape Bivy plus Recamp Ultralight Sleeping Bag is an impressive budget sleep system. It was ~65°F when I climbed into my Redcamp sleeping bag to go to sleep. By 1am, when I awoke, the temperature had dipped down to ~55°F and the bag alone wasn't keeping me warm enough. I put on my Frog Toggs jacket and slid my sleeping bag into the SOL Escape Bivy. For the rest of night was toasty warm. When I awoke, there was no condensation to be found. I find this combination of bag and bivy to remarkable: for less than $70 you get a lightweight, compact sleep system that will keep you warm to the 50's if not below. The sleeping bag liners I've used in the past never delivered substantial warmth, while old school bivy sacks were a condensation nightmare. The SOL Escape is a game changer, and turns the Recamp into a truly useful sleeping bag. Next time I may experiment with just sleeping in long underwear and the bivy itself.

Warning: if you choose to use an SOL Escape bivy, chances are you're going to look pretty pathetic. But at least I was warm!

The PCT Bear Bag Hang rocks. It's hard to believe that after nearly 30 years of hanging bear bags a new technique can come along that's a game changer, but that's what the PCT Hang delivers. Seriously, take a few minutes and check out this approach to securing your food. After having tried this method in the field, I'm officially sold. As for the food bag itself, my go-to is a large sized True Liberty bag. They're incredibly strong, clear which makes reviewing the contents easier and they claim to block odors.

My Flip & Tumble Shopping bag got extensive use - On our last few backpacking trips I've brought my Man Bag along, including its every day carry contents. It contains many of the essentials I'd be bringing on the trail, and the non-backpacking items keep coming in handy.

Case in point: the reusable shopping bag I carry with me. I found there were a number of times we had dropped packs, but still needed to haul food, water or equipment. The Flip & Tumble was the perfect way to do this. At dinner time there tends to be a minor gear explosion, as heap of accoutrements needed to prepare a meal make an appearance. Rather than having stuff spread out haphazardly, I hung the Flip & Tumble up on a nearby tree and used it to store these easily lost items. If you're traveling as a group, I'd suggest tossing one of these bags in with your gear and see how much use you get out of it.

On a related note: I'm sure I look like a goofball wearing my man bag as a chest pack on the trail. But, it's comfortable and oh so functional, so I'll take the fashion demerits.

Opinel Knives are an impressive budget option - The Opinel has a reputation for being high quality, super sharp and cost effective knives. After having used one this last trip I concur. The locking mechanism isn't perfect, but it's far better than a style that requires you put your fingers in the path of the blade. Perhaps I'm used to small knives, but I found the #7 to quite adequate and the #8 to be almost too big. If I have a need to pick up another one of these knives, it'll probably be a #6.

The Garmin InReach is a Game Changer - Our parents bought us a Garmin InReach Mini for our anniversary and we used it for the first time this trip. We didn't do a whole lot with it: we sent a present message when we started the trip and one when we ended. But man, what amazing piece of mind you get knowing you can communicate with the outside world. I hope we'll never need to use it in a true emergency context, but it sure is nice to have it.

What To Try Next Time

Split shared gear into personal gear - This trip, rather than having one large hand sanitizer, each person had their own small version. The result: less searching through packs looking for the single source. I'm planning to extend this concept further. For example, rather than one team first aid kit, set up each individual so they've got their own small kit. In theory, this will add convenience (got a blister? you can treat it using the gear you have easy access to) and split weight fairly. The downside may be the total additional weight carried. I'll bust out the food scale and game out a few different options.

Monday, July 09, 2018

Backpacking Awesomeness: Trayfoot Mountain / Paine Run Loop

This past weekend we hiked the Trayfoot Mountain / Paine Run loop in Shenandoah. It's a testament to the number of amazing views and trails in Shenandoah that this hike isn't higher rated. For our purposes, it turned out to be an ideal overnight backpacking route.

At 11am, we parked at the trail head, hoisted our packs and were on our way. After about a mile of uphill we reached Blackrock Summit. The summit is a boulder pile that's just crying out to be explored. For reasons I can't fully explain, my fear of heights didn't kick in while playing on it, which made it even more fun for me. We enjoyed a perfect lunch with an amazing view. This was B's first backpacking trip, and it was ideal to start it off with such an awe inspiring view.

After lunch it was time to knock out some miles. We did another mile, including some steep uphill, to reach the view-less summit of Trayfoot Mountain. A couple of the maps I found online indicated there was a lookout tower there, but alas, I could not find any evidence of it. From there, we walked about 3 miles along the ridge of Trayfoot Mountain, with a healthy dose of downhill. M and B lead the way, often leading Shira and myself by hundreds of yards. Oh, the boundless energy of youth! The fact that their packs weighed a third of Shira's and Mine didn't hurt either.

At the end of stretch on the ridge we found another overlook, though it wasn't as impressive as the first one. And before we few knew it, we were making our final descent from Trayfoot Mountain into the area where we would camp for the night.

As we trudged down hill I noticed a small brown'ish snake curled up and snoozing. It was almost perfectly camouflaged with the trail's muddy sidewall. I didn't grab a photo, and of course, now I wish I had. From looking at this list of common snakes in Shenandoah, I do believe we saw a small Copperhead. Though, without a pic, that's just a guess. I know that when we arrived in camp, we did see another snake, which was clearly a garter. The snakes, plus a couple of toads that B spotted were all the wildlife we'd see during the trip. Though, given all the fresh bear scat, we knew we weren't alone.

After about 6 miles of hiking we arrived at our campsite. The campsite had a massive tree bisecting it, so every time we wanted to go from the tents to the cooking area we had choose between the limbo or hurdles. Still, it was a solid campsite and we had it all to ourselves.

We arrived at the campsite early enough that we had time to explore the 'waterfalls' and 'swimming holes' that were .3 miles away. Perhaps it was due to the volume of water, but the area was just a stretch of fast moving stream. Still, soaking our toes and chilling on rocks was heavenly. This is what backpacking is all about: put in the sweaty 6 miles, earn yourself glorious moments of camaraderie and relaxation.

After an hour of splashing around we returned to camp to cook dinner. It was during dinner that we ran into the fail of the trip. One limitation of Shenandoah is that fires aren't allowed in the backcountry. We had planned for this, and prepared to boil our hotdogs rather than cook them over an open flame. After 20 years of using the same pot, I decided it was time for an upgrade to something more modern. I filled the brand new pot with water, set it on the stove, and watched with horror as the pot slid off the stove.

The problem: our new pot was non-stick, which included a non-stick outside. The coating was so good that the stove legs couldn't get a grip on the bottom of the pot and it kept sliding off. D'oh.

We ended up solving the problem by propping a large rock next to the stove, which provided just enough support to keep the pot in place.

While I obviously need to find a new pot solution, I wasn't particularly upset with the experience. Another key aspect of backpacking is that things don't go as planned. That's more feature than bug. It's this unpredictability that leads to amazing things: like breath-taking views and (supposedly!) copperhead snake sightings, and by necessity it has to lead to some less than stellar experiences as well. Sanitize the experience enough and you'll lose the good with the bad.

For the record, the hot dogs were delicious! For Kashrut reasons we cooked them in True Liberty Bags, which worked out quite well and cleanup was a snap. We also roasted marshmallows over a backpacking stove. This wasn't quite as romantic as cooking them over an open fire, but it got the job done.

While the sun was still in the sky, we went to our respective tents and called it a night.

We all made it through the night without incident; most importantly nobody froze despite the temps dipping down into the high 50's (which feels much colder than it sounds). I polled M and B about their night in the woods. They both said the same thing: it was so dark! And B noted the amazing blanket of stars in the sky. I had taken in this view too at 3:00am, but it was too cold to stand around an enjoy it. As for me, I slept well and woke up without much soreness, thank heavens for Vitamin I (aka Ibuprofen).

After a breakfast of hot chocolate and oatmeal we packed up camp and trudged the 3 miles uphill back to our car. Again, the kids rocketed ahead of us. It was along Paine Run that we saw quite a bit of bear scat, so they were definitely in the area. We also saw a large number of blueberry bushes, though they weren't in season. If you were to hit this trail at just the right time of year you'd be in for quite the blueberry treat.

And just like that, we popped out of the forest and arrived at the car. We dumped our packs, changed our clothes/shoes and before we knew it, we were driving away with the air conditioning blasting.

Taking newbies backpacking is all about balance. Make the trip too easy and they miss out on the joy of the accomplishment that comes from facing a real challenge. But overdue it, and the blisters and exhaustion cloud a good time. Combining Trayfoot Mountain / Paine Run loop with two fit teens and perfect weather made for just the right balance. M and B got to see the views, a tiny bit of wildlife and the joy of taking off a pack after 6 miles of hiking. Thanks to their fitness and a bit of preparation, we managed to dodge blisters, exhaustion and a laundry list of other things that can mar a trip. In short: it was blast, and I'm already starting to plan next year's adventure.