Thursday, June 21, 2018

Winkler Botanical Reserve - A Nature Oasis in a Suburban Desert

Today I found myself helping out a fellow foster parent by watching the 7 year old in their care. I suppose I could have plopped the kid in front of the TV and done work for the morning, but instead I used the time to explore a local site I've been curious about for years: Winkler Botanical Reserve.

I packed a few snacks, a couple of water bottles and a makePad, and just like that C. and I were in the car heading to Winkler. I'm not sure how much of a hiker C. is, so I figured the relatively small size of Winkler would work to our advantage. And if it was a dud, no big deal, we'd go elsewhere. Right before we pulled out of the driveway, I handed C. the makePad and told him he could use it to create whatever he wanted. By the time we had driven the 15 minutes to the entrance, he had found WalkBand and was strumming away on the virtual guitar.

Our walk through Winkler was truly delightful. There's no maps or signs; nor is the area large enough to get lost in. I let C. pick a direction and off we went. In short order, we found a variety of colorful flowers to snap pictures of. It's amazing how secluded the place is, you really do forget that you're adjacent to office buildings and route 395. What the trails lack in length they make up for in woodsy authenticity.

Along with pretty flowers, there's also some interesting features to explore: a ropes course tower (which, alas, you can't climb), a pond, a couple of waterfalls, a log cabin and a sort of abandoned cellar. I suppose you could turn up your nose at these discoveries, as they aren't especially flashy. But with a bit of imagination and the right mindset they're truly fun. We walked slowly, with both of us snapping plenty of pics.

If that had been the extent of Winkler, it would be considered a gem. But wait, there's more.

There's also a Geocache located in the park. Best of all, it's the right level of difficulty to find (not obvious, but not wickedly difficult), and the container is large enough that it contained a number of interesting items. C. had never geocached before, and relished the idea of treasure hunting. He walked away with three Turkish coins, which might not be worth the value of 3 gold doubloons (OK, they're worth about 53¢), but I'm sure they're far more lucky. The presence of the Geocache is really the icing on an already delicious cake.

As we were nearly finished walking the perimeter of the pond, C. announced that there was a deer across the water. Sure enough, there was a bambi-like fawn just chilling across the way. In a trip which didn't include seeing much wildlife, seeing the deer was a real find.

Whether you want to take the kids out for an accessible yet rustic adventure, or you just need a dose of vitamin N, Winkler is a terrific option. It may be relatively small, but it's truly an oasis.

As we were driving back home, C. excitedly announced that he had 'put a hat and eyes' on one of his flower pictures. Without any prompting, he had opened up PicSay, loaded the photo of his choice, and found the sticker functionality that let him create his masterpiece. I suppose I shouldn't be surprised that a 7 year old can intuitively figure out features on a cell phone, but I have to say, it does give me hope for the future.

Wednesday, June 20, 2018

Kilns and Cannons - Exploring DC's Not So Hidden Past

These days, if I'm being extremely generous, I'd say DC's primary export was policy. Heck, we even pass a law or two, now and then. But it wasn't always so. And if you look around the city, you can see traces of a far more industrial DC.

These last couple of weeks I've used my running time to hit up two different historic sites that reflect this era.

First off, I visited the Godey Lime Kilns. Back in the 1860's, these bad boys were producing lime for various local building projects. Apparently, they were preserved back in the 1960's, and the site looks quite neat and tidy today:

You can read about the history of the kilns here. If you've lived in DC long enough, you may have caught a glimpse of them from the highway. In fact, they're quite accessible to the curious. Just find your way to 26th NW and L street NW, and then walk to the dead end of L street. When I visited the site I found one sketchy looking tent setup in a neighboring field, but had no problem reaching the kilns.

Tonight I made my way to a second site: the ruins of the Columbian Cannon Factory. During its heyday it produced a wide range of artillery and even managed to miraculously survive the British torching DC. Read the whole story here.

This site took a bit more sleuthing to find. The ruins are located off the Capital Crescent Trail, about half a mile in from its start. I'd been on that section of the trail numerous times and never noticed any ruins. And so it was this evening:

But sure enough, behind that wall of brush are the ruins of an old structure:

Finding my way to these sites isn't just a chance to bulk on my local trivia. It's a simple way to embrace the best values of Urban Exploration:

I find it sad that most people go through life oblivious to the countless — free — wonders around them. Too many of us think the only things worth looking at in our cities and towns are those safe and sanitized attractions that require an admission fee. It's no wonder people feel unfulfilled as they shuffle through the maze of velvet ropes on their way out through the gift shop.

Urban explorers strive to actually earn their experiences, by making discoveries that allow them to get in on the secret workings of cities and structures, and to appreciate fantastic, obscure spaces that might otherwise go completely neglected.

For me, Urban Exploration conjures up thoughts of risk taking and law breaking. But not so with these two sites, and no doubt many others around the city. They're waiting for you to discover them; you just have to be curious enough to look.

Tuesday, June 19, 2018

Review: The Actor's Life - A Survival Guide

The Actor's Life by Jenna Fischer is part biography and part guidebook to those with dreams of acting. Jenna Fischer's credentials speak for themselves: she went from a nobody, to Pam on The Office. The book elegantly uses her career journey as sources of both advice and cautionary tales.

While I'm not quitting my day job to be an actor, I did find the book spoke to me on a number of levels.

First off, the book gave me a fresh perspective into the world of TV and Movies. I appreciate more than ever what a struggle it is to land a notable TV/Movie role. Since reading the book, whenever I see a quirky commercial or notice a scene with actors buzzing around in the background I think: every individual on set had to work their tail off, passing numerous hurdles, just so they could be there. It's down right impressive.

Second of all, while Fischer almost certainly didn't intend it as such, the book strikes me as interesting social commentary. Throughout the book, I came to appreciate how important an actor's 'look' was. If your head-shot shows you with a beard, then you better show up at the audition with that same beard. I also learned that many commercials contain just a few lines of dialog, far fewer than you'd expect.

This all works because our brains are optimized to recognize patterns and make assumptions. Imagine we cut to a scene with a seasoned plumber talking to a frazzled new mom. Thanks to the look of the players, the use of costume and set design, we need only a phrase or two of dialog to know what's going.

The fact that we have these shortcuts in place isn't on the surface a bad thing. Heck, it's probably what makes movies and TV even work. The challenge is that pattern recognition and assumption making doesn't stop when you turn off the TV. This can have real world implications, from the hiring manager who passes on a quality candidate, to the Police Officer who makes a fatal error. I don't know the best way to limit the impact of these biases, but I do know Fisher's book underscores they're pervasiveness.

Finally, the book spoke directly to me as a programmer who works for himself. Like Fischer, I'm my own CEO. Much of the advice she gives her readers, from building a like minded community, to making your own work, apply directly to folks like myself. Most importantly, she talks about how actor's never stop hustling; they're always working hard to land their next gig knowing that it won't be handed to them. Fischer may have had huge success as 'Pam,' but it doesn't mean she's automatically offered another amazing role.

This is a lesson I've learned from years of working for myself, and it would have been sound advice to have had at the start of my self-employment adventure.

If you're interested in being an actor, definitely pick up Fischer's book. But I'd say her wisdom applies to anyone who wants to make it as their own CEO. The road may be longer than you expect and the journey harder, but the reward is that much sweeter. Just ask Pam, uh I mean, Jenna.

Monday, June 18, 2018

Arlington Monuments and a Doorless Wonder

Hanging out with Spencer yesterday was a real treat. We spent a few hours hitting up some of Arlington's finest memorials. The first stop was the Air Force Memorial. Then on to a hike through Roosevelt Island ending at Teddy Roosevelt's likeness. And finally, we finished at the Marine Corps Memorial.

On Roosevelt Island we came across a 5 lined skink, which has to be a good omen. And while I've been to the Marine Corps Memorial a few times, I forget how photogenic it is. No matter where you stand, you're lined up for an amazing pic.

Spencer regaled me with stories of his Jeep. With his A/C out he did what any inventive young person would do: he implemented a Jeep Mod to make it possible to remove his front doors. A/C problem solved. And check it out, the Jeep doesn't just look cool, it sounds cool too:

As someone who tinkers around with bits, I've got nothing but mad respect for anyone who does so with atoms. If I ever need my car hacked, I know who I'm calling.

Friday, June 15, 2018

The Graduate

Tis the season for graduations, and yesterday we attend B's. We're so proud of her and know she's going to kill it in college!

I have to hand it to Arlington, they ran their high-school graduation with military grade precision. It started and stopped as promised, and that included the variables of two student speakers and reading 400 student names. I was also impressed to see that the graduation was MC'd by a student. That was a nice touch and spoke to the maturity of the class (or at least one member of the class).

As for the pic of her brother, well, that's just a bonus. Enjoy!

A Brute Force Solution to the Penniless Pilgrim Riddle

The Kids Should See This posted a challenge known as the Penniless Pilgrim Riddle. There's a video describing the riddle as well as the solution below. Here's a summary of the puzzle.

Consider this map and your current location:

The rules are as follows:

  • You start off with a tax of $4.00
  • Every time you walk a block the tax owed is modified. Go east add 2, go west subtract 2, go north multiply by 2, go south divide by 2.
  • You can't walk the same block more than once.

How can you go from the position shown on the map to the bottom right hand corner with an ending tax of $0.00?

On the surface, this doesn't seam possible. Every block you walk south, taking you closer to the end point, incurs a 2x penalty.

After pondering this puzzle for a few minutes I decided to write code to find me a solution. That counts as solving it, right?

My approach was to do a brute force attack on the problem. The poor pilgrim would have to walk every possible combination of legal routes until he found one that worked. The complete code I wrote is here. However, these two functions capture the essence of my solution.

(define (try direction x y owed walked)
  (solve (next-x x direction)
         (next-y y direction)
         (case direction
           ((south) (* owed 2))
           ((north) (/ owed 2))
           ((east) (+ owed 2))
           ((west) (- owed 2)))
         (cons (next-street x y direction)
(define (solve x y owed walked)
  (cond ((arrived? x y) (list (= owed 0) owed (reverse walked)))
         (let loop ((options
                       (if (can-walk-north? x y walked) '(north) '())
                       (if (can-walk-south? x y walked) '(south) '())
                       (if (can-walk-east? x y walked) '(east) '())
                       (if (can-walk-west? x y walked) '(west) '())))))
           (cond ((null? options)
                  (list #f owed walked))
                  (let ((attempt (try (car options) x y owed walked)))
                    (if (car attempt)
                      (loop (cdr options))))))))))

solve takes in a current x/y position, current tax owed and a history of the blocks that have been walked. The function figures out which possible directions are legal to walk, and then calls try on the first one. try updates the state of pilgrim and then calls solve. solve returns false if the pilgrim didn't reach the destination, or reached the destination with a tax greater than zero. If try returns false, solve goes on and tries the next direction it found as valid. When all possible directions are exhausted, solve gives up returning false.

To find a solution to this riddle I kicked off solve like so:

(solve 2 4 4 '("3,4-4,4" "2,4-3,4"))

This invocation accounts for the fact that the pilgrim starts at 2,4 with a $4.00 tax. The list of blocks walked is a notation that names every street in the grid. It does so by combining the x,y coordinates of the street's end points. The smaller coordinate is always listed first. This insures that regardless of how the pilgrim approaches a road, it will be named properly.

I kicked off the above on my Galaxy S9+ under Termux and waited. A minute or so later, I had this output:

The pilgrim arrived at 0,0 with a $0.00 tax; it worked! The list of street names tells me the route that pilgrim took to get there. I transcribed the streets to a piece of scrap paper and arrived at a visual display of my discovered route:

I had a feeling that the grid size was small enough in this problem that a brute force attack would work, and it did.

There's something poetic about a recursive solution like this. So many attempts are made, yet the code to try all these attempts is relatively terse.

Definitely take the time to watch the video and accompanying solution. Most importantly, it walks you through the process of teasing out a valid route using little more than simple observation. It's inspirational: maybe next time I won't be so impatient and jump right to coding. But still, this was some fun code to write!

Wednesday, June 13, 2018

Pupusas on the Pike - Fried Cheese Perfection

Are they the best Pupusas on the Pike? I'm not an authority on pupusas, so I can't really say. But man, were the cheese and squash pupusas from Sofia's Pupuseria delicious! They were freshly made, which meant we had to be patient, but boy were they worth the wait.

If you find yourself in the area, and have a craving for something fried and cheesy (and who doesn't have that craving at all times?), you should stop by. Your taste buds will thank me!

Tuesday, June 12, 2018

An Ideal Soundtrack My Amtrak Adventure

Last week, as I was sitting in the Amtrak waiting area at Union Station, it occurred to me that I could try tuning in to the behind the scenes operations. I did a quick Google search for Amtrak radio frequencies and this page came up. I plugged my SDR dongle into my Linux laptop and kicked off this rtl_fm command:

  rtl_fm -f 160440000 -l 20| \
   tee ~/dl/chatter.raw |  \
   play -t raw -r 24k  -es -b 16 -c 1 -V1 -

Along with a burst of static, I could clearly hear radio traffic! I quickly ran through squelch values, and found that -l 200 kept the static at bay. Here's a sample of what I heard:

The relative calm of the waiting area contrasted nicely with the near continuous discussion over the radio.

It seems that whenever I get inspired to listen in on radio traffic, I spend nearly all my time trying to dial in the right frequency; usually giving up before I hear anything. But not this time, everything just worked!

Pulling away from the station, I found that the traffic ceased. As we approached other stations, I tried to tune in again. rtl_fm supports monitoring multiple frequencies at once, making for a command line radio scanner. Here's a command line I used to listen in on multiple Amtrak channels:

 rtl_fm -f 160.425M -f 160.650M -l 200 | tee ~/dl/chatter.raw | \
   play -t raw -r 24k  -es -b 16 -c 1 -V1 

And here's a command line that scans nearly all 100 of the known Amtrak channels:

rtl_fm -l 200 \
-f 159.81M -f 159.93M -f 160.05M -f 160.185M -f 160.2M -f 160.215M -f 160.23M \
-f 160.245M -f 160.26M -f 160.275M -f 160.29M -f 160.305M -f 160.32M -f 160.335M \
-f 160.35M -f 160.365M -f 160.38M -f 160.395M -f 160.41M -f 160.425M -f 160.44M \
-f 160.455M -f 160.47M -f 160.485M -f 160.5M -f 160.515M -f 160.53M -f 160.545M \
-f 160.56M -f 160.575M -f 160.59M -f 160.605M -f 160.62M -f 160.635M -f 160.65M \
-f 160.665M -f 160.68M -f 160.695M -f 160.71M -f 160.725M -f 160.74M -f 160.755M \
-f 160.77M -f 160.785M -f 160.8M -f 160.815M -f 160.83M -f 160.845M -f 160.86M \
-f 160.875M -f 160.89M -f 160.905M -f 160.92M -f 160.935M -f 160.95M -f 160.965M \
-f 160.98M -f 160.995M -f 161.01M -f 161.025M -f 161.04M -f 161.055M -f 161.07M \
-f 161.085M -f 161.1M -f 161.115M -f 161.13M -f 161.145M -f 161.16M -f 161.175M \
-f 161.19M -f 161.205M -f 161.22M -f 161.235M -f 161.25M -f 161.265M -f 161.28M \
-f 161.295M -f 161.31M -f 161.325M -f 161.34M -f 161.355M -f 161.37M -f 161.385M \
-f 161.4M -f 161.415M -f 161.43M -f 161.445M -f 161.46M -f 161.475M -f 161.49M \
-f 161.505M -f 161.52M -f 161.535M -f 161.55M -f 161.565M | tee ~/dl/chatter.raw | \
   play -t raw -r 24k  -es -b 16 -c 1 -V1 

Though, I have no idea how practical a list of frequencies this long is.

There's something empowering about listening to behind the scenes radio traffic. It's like glimpsing a secret world while your fellow waiting-room dwellers are none the wiser. I don't ride Amtrak frequently, but next time I do I'll arrive ready to tune in.

Monday, June 11, 2018

Frogs, Family and Fun - Visiting The National Arboretum

I've been to the National Arboretum in DC a number of times: alone with Shira, with my Mother-in-Law and Ron, with our running buddy and probably other times as well. It's always a good time. But yesterday's visit with our 7 and 10 year old cousins was definitely a unique and awesome experience. (Oh, and Ryan and Andrea, you guys were fun, too!)

I got a hands on education in the in the delicate arts of frog catching, caterpillar hunting, dragonfly spotting, tree climbing and honey-suckle gathering. For my part, I got to educate the boys about Milk Weed, and found a number of Monarch Butterflies enjoying their delicacy of choice. I felt like a kid who was getting in the best possible mischief.

I can see I still have a lot to learn about enjoying the outdoors, and I look forward to these young gurus teaching me their many skills!


Related Posts with Thumbnails