Monday, November 28, 2022

Abingdon Adventure - Day 1

Standing at at the The Great Channels trailhead I had an overwhelming sense of gratitude and relief. So many out-of-our-control variables had to go just right to make even starting this hike possible, and it looked like the stars were indeed going to align for us. For one thing, after days of bad weather reports that suggested we should scrub our trip, we were given perfect weather of mid-50' and sunshine. For another, 8 week old baby L was contentedly snoring on my chest. L came to us a few weeks ago as our most recent foster placement, and she was certainly a curve ball for the hiking trip we'd had planned for our Thanksgiving getaway.

It turns out that L is an angel, and endured the 5 hour road trip to the trail head without incident. After a minor diaper blowout that occurred when we pulled into the parking area, was she was cleaned up and happily placed in the Moby wrap carrier. Our hike to the channels, which I was sure was going to get derailed, was a go!

The channels hike consists of a 3 mile slog to the top of Middle Knob. Because the leaves had dropped from the trees we got glimpses of amazing views, though none were totally unobstructed. The pay off for the hike begins at the 3 mile mark, when a sweet looking 1930's fire tower comes into view. Thankfully, you can't climb the tower, though it does make a fascinating photographic subject. And finally we had access to the truly interesting part of the hike: the channels.

Following a sign into a wooded area we came across a breathtaking overlook. From there, we chatted with another hiker who explained that we were close to the channels; we needed only leave the overlook and descend down a steep but somewhat hidden trail. We followed her advice and found ourselves immersed in other-world looking rock formations. We had been promised slot canyons, and the channels delivered. Around every corner was another amazing rock formation and space to squeeze into and explore.

The hike to the trail head to the channels is well signed. Once you're in the maze-like channels, however, you're mostly on your own. We noticed some red arrows painted on the walls and initially thought they described a route you could take to see the formations. However, we only ever found the red arrows pointing towards the exit. And then it clicked: you're supposed to wander the channels as you wish, and when you want to return home, follow the red arrows. Very clever. I don't understand why the trail maintainers don't make the system official and put clearly marked (and reflective) arrows and instructions in the channels, versus depending on such a primitive and fragile system.

The All Trails reviews of the trail suggested that the channels would be colder than the rest of the hike; and the advice was on point. I donned a puffy jacket over baby L and myself we both remained quite comfortable the whole time.

While there was a bit of graffiti in the area, I was impressed at overall how pristine the channels were. I suppose that's one benefit of having this hike be in the middle of nowhere with 3 miles and 1,300 feet of elevation gain, to discourage would be vandals.

After 45 minutes of exploring the channels, we decided to call it and headed back to the car. The 3 mile hike was straightforward and before we knew it we were back in a warm car with a happy baby.

The Great Channels had absolutely been a worthy hike for the first day of our adventure and I can't recommend it highly enough. Because the rock formations are so unique, I'd easily put this hike on a list of Virginia greats, along with Old Rag, Billy Goat Trail, section A and the Devil's Marbleyard.

For dinner, we hit Greeko's Greek Cafe. Shira's falafel was ok. The salmon in my salmon souvlaki was very good. But the fries and pita were perfection and made the meal an absolute delight. The staff, like the staff at the Fairfield Inn where we were staying, were exceedingly warm and friendly. This all made for a wonderfully pleasant evening and gave us great vibes for the small town that is Abingdon, VA.

Tired from a long day of driving and hiking, we called it a night after dinner. Tomorrow would be more hiking and I drifted off to sleep hoping it would measure up to today's high quality adventure.

(I then was awoken a few hours later by baby L who was hungry. Ahh yes, the joy of little ones and their tiny tummies!)

Friday, November 18, 2022

Tasker: Auto Downloading a Random Pic From A Google Photos Album

I wanted to dress up my Tasker based Focus Mode by adding a picture on the Focus Overlay scene. To make things more interesting, I wanted to it to be a random pic of my wife that would update on a regular basis. After all, she's the one I'm usually trying to focus for.

Here's what the finished product ended up looking like:

Here's how I got this to work:

1. I Created a Google Photos live album. This is a slick feature offered by Google Photos that causes photos to be auto-added to an album every time the selected face is detected in an image.

2. I figured out this album's Album ID using the Google Photos API's try this method feature.

3. I headed over to console.developers.google.com and created a new project and enabled the Google Photos API on it. This project is needed so I can authenticate with the Google Photos API and access my private photos in a secure way.

4. While on console.developers.google.com I added a new set of credentials. I chose OAuth client id for the type of credentials and selected Web Application under application type. Finally, I added https://tasker.joaoapps.com/auth.html to the Authorized Redirect URIs as noted in the Tasker Documentation.

I saved the Client ID and Client secret shown on the credentials page as I would be using them later on in the process.

5. Switching into Tasker, I created a general purpose task that grabs a random photo from a Google Photos Album. You can grab this task from TaskerNet. I fell back on my usual strategy of using Javacriplets to set up calls to, and process the response from, an API. In this case I'm making two web calls: the first to the API to get the details of the first 100 photos in the album identified by %par1. I'm then randomly picking one the mediaItems, and downloading it to the filename provided in %par2.

6. I created a Grab Random Wife Picture task which calls the task in step (5) with the album ID and file name of my choice.

7. I created a time based profile that runs on the hour, throughout the day, and calls the task in step (6).

8. Finally, I updated the Focus Overlay, swapping out the text box that read 'Focus' with an image element. The image element uses the path to the downloaded file, which is updated hourly.

Whenever I launch focus mode it shows me the latest image that has been downloaded. And most importantly, it makes me smile.