Monday, November 30, 2015
Saturday, November 28, 2015
Wednesday, November 25, 2015
Tuesday, November 24, 2015
Monday, November 23, 2015
Flaming Festivities!
Reading Racket Documentation on Android, No Internet Needed
I've got emacs and racket running nicely on my Android phone (thanks to the awesome Gnuroot). But that left me with a new wrinkle: what's the best way to access Racket Documentation while programming on my phone? Obviously, I can open up a browser to doc.racket-lang.org but what if I'm a context where I don't have access to the Net?
By default, apt-get appears to install racket documentation in /usr/share/doc/racket, which means that my phone had the documentation, I just needed a way of viewing it.
Method 1: w3m. A quick and easy way to view the documentation is to run apt-get install w3m, and install w3m. w3m is an extremely handy tool as it lets you view html files from the command line. For example:
Method 2: launch a local web server. While w3m is a fast and functional solution, I wanted to be able to view the documentation in a standard browser, too. I figured I could accomplish this if I kicked off a local webserver. I could then point my regular Android browser to this server and I'd be all set. While I'm sure I could have installed apache or another full featured server, I found an easier and lighter weight solution: wbox. wbox is a testing tool that happens to offer the capability of being a stand alone, zero configuration, web server. Installing wbox is as easy as running apt-get install wbox. And here it is in action:
(Note the URL is: http://localhost:8081)
wbox worked perfectly, and I should be able to leverage this same approach to hosting any local documentation.
Combine this local web browser approach with Android Multi Window, and you've got a remarkably functional environment.
I'm one step closer to a full self contained, no-Internet-needed, development environment.
Friday, November 20, 2015
First Impressions: Software Defined Radio - Cheap and Remarkably Powerful
For some time, I've been meaning to add a radio to my Jr. Go Bag. I figure it would be helpful for entertainment purposes and emergencies. There are a number of low cost, compact, high quality'ish FM/AM options out there, but none of them were every low-cost, compact or high quality enough for me to pull the trigger on them.
On a whim one day, I Googled for Android USB Radio and discovered the world of Software Defined Radio. Sounds expensive and complex, right? Actually, it's just the opposite. For less than $10, you can buy a USB stick which works with SDR Touch, an Android app that uses the stick to pull in radio signals.
I did some more research and finally splurged on this little dongle, here: Mini DVB-T RTL-SDR Realtek RTL2832U + R820T Tuner Receiver. Last night it arrived and this morning I plugged it into my phone and fired up SDR Touch. It took a few minutes to get orientied, but check it out:
That's my phone listening to two different frequencies: the first being a local Rock station, the second being air traffic control at National Airport. And here's a shot of the radio dongle itself:
My original goals of cheap and compact have been met*. It's hard to say about the quality compared to other radios, but there capability definitely exceeds expectations. Being able to pull in seemingly random signals (like the the Air Traffic Control) is just too cool. And SDR Touch offers some impressive features, including the ability to record incoming audio.
I've still got a lot to learn about Software Defined Radio. But I've got to say, it's not often you stumble on technology that's so inexpensive and yet so very powerful.
* OK, mostly met. I still need to optimize the antenna, which is a bit bulkier than I'd like.
Thursday, November 19, 2015
Thermaroid: Android + a Thermal Printer = Super Cheap, Super Low Quality Photos on the Fly
Thermaroid lives! Today I finished smooshing together my Camera API progress with my past success printing to a Bluetooth Thermal Printer. The result is a drop dead simple app. The app starts up with absolutely no UI, it's just a live camera preview. Short press on the screen and the camera focuses. Long press the image is captured and sent to the Bluetooth printer. Here's an action shot:
(Yes, that's a screenshot of me using Thermaroid to take a picture of a picture that I just printed out with Thermaroid. Got that?)
The app needs quite a bit of polishing before it's ready for prime time, including: some indication that your photo is being printed and proper code for backgrouding the printing process. But functionality wise, it works.
I think I'm finally getting the hang of using Kawa Scheme to build apps. Apparently I needed to let go of this notion that I could somehow write Java code using Scheme's terse conventions. Kawa lets you do this a bit, but at the end of the day, things seem to work better (or compile with fewer complaints) when you annotate your code with types. I'm definitely interested in seeing if I can do some refactoring to eek out a bit more elegance than purely translating Java to Scheme. We'll see.
Check out the code here. And happy photo'ing!
Wednesday, November 18, 2015
Doing Battle With, and Losing To, the Android Camera2 API
I'm back to fiddling with with my Android Bluetooth Thermal Printer. Specifically, I'm building a small camera app that outputs to the printer directly, rather than saving files on your phone.
Looking at the Camera API, I realized that it was now deprecated, so I started building the app using Camera2. I'm not proud to admit it, but Camera2 beat me. I give up. That's one complete and crazy API to use. That's not a bad thing, it's just not ideal for quick little apps.
Oh, and all of this is written in Kawa Scheme. So if you're looking for Scheme Android examples, or how you might invoke the camera from a Scheme app, check out my project's repository, hopefully it'll be of some use.
For now, the app does little more than open up the camera, switch into preview mode and focus when you press the screen. But hopefully with the Camera functionality in place, hooking in my existing Thermal Printer Code shouldn't be too painful.
Two gotchas that I overcame:
1. I was getting the message: A TextureView or a subclass can only be used with hardware acceleration enabled, and of course the camera didn't work. I tried turning on Hardware Acceleration in the AndroidManifest.xml. That made no difference. Ultimately, it was this note that solved the issue:
The default value is "true" if you've set either minSdkVersion or targetSdkVersion to "14" or higher; otherwise, it's "false".
Turns out, I wasn't setting minSdkVersion at all. I did so (setting it to 22), and that fixed the issue.
2. I fired up the camera preview but the screen remained black. There were no messages in the Android monitor so I was baffled. Then it hit me: the camera is lying down on its lens, of course the screen is black. I picked it up, and the camera view showed the correct image. What the heck was I thinking?
Here's the project if you want to follow along: Thermaroid
Monday, November 16, 2015
DC Monuments, Mainstream Edition
One of things I love about DC are all the esoteric sites to see (like: Accidental Museum of Paleontology), but every once in a while it's nice to just head down to the Mall and see the popular monuments.
I did just that yesterday with Shira and Elana. Neither of them had been to the World War II Memorial, so that become our goal. It was the perfect weather for Mall walking, and we encountered the usual blend of tourists and local sports clubs (kickball, anyone?).
Just an awesome time and both ladies found the Memorial to be impressive. It's my third or fourth trip there, and I still find it be inspiring.
Friday, November 13, 2015
blurl: Blogger, now with a command line option
I've finished another round of blurl development, adding support for creating, updating and deleting posts. That means that you can now manage your Blogger Blog from any ssh connection. You're welcome to grab the source code from github and play with it.
Along with being able to edit and post content on your blog from anywhere, you've also got the ability to automate publishing tasks. Here's a few examples to get the creative juices going. Like any Unix tool, you're only limited by your imagination.
Generate automated content. Throw this one-liner in cron, and you can start the day off with a quippy blog entry.
(echo "<p>" ; fortune | tr '\n' '@' | sed 's/@/<br>/g' ; echo "</p>") | \ blurl -a new -t "Words of Wisdom" -l 'advice,blurl'
Have your server blog its own status.. Again, drop this code into cron and your server can blog about itself.
echo -e "<h1>Memory</h1>\n<pre>`free -m`</pre>\n<h1>CPU</h1>\n<pre>`cat /proc/cpuinfo`</pre>;<h1>Disk</h1><pre>`df -h`</pre>" | \ blurl -a new -t "`date +%B` Server Report" -l "server,blurl"
Bulk Publishing of Content. Here's an example that publishes 20 image files from a given directory, but it could just as easily published 200.
puburl `ls | grep .jpg | tail -30 | head -20` | \ while read url ; \ do echo "<a href='$url'><img src='$url' width='100' style='float: left; margin: 0 5px 5px 0px'/></a>" ; \ done | \ blurl -a new -t "Hiking Photos" -l "blurl,photos"
Grab content from another site and publish it as your own. Now there's an idea that can get you into a heap of trouble quickly. Don't evil (or stupid).
curl -s 'http://forecast.weather.gov/MapClick.php?lat=38.86100201523192&lon=-77.10106643007089' | grep 'title="Today' | sed -e 's/^.*title="//' -e 's/".*//' | blurl -a new -t "Weather Report" -l 'weather,blurl'
Publish the outcome of a software build. Keep the team up to date by having everyone subscribe to the blog being published to.
(echo "<pre>" ; make;echo "</pre>" ) | \ blurl -a new -t "sitecopy Build Status" -l "software,blurl"
Practice Append Only writing. Think Hemingway Mode but on the command line. Great for your next novel, or for just keeping a server transcript going with ease.
# Set up the blank post echo "" | blurl -a new -t "My Novel" -l "novel,work-in-progress,blurl" blurl -a list | head -1 export NOVEL_ID=6149764004006809175 # Now 'write' (blurl -a get -i $NOVEL_ID ; echo "Sophie was happy. But then again, Sophie was a ") | \ blurl -a update -i $NOVEL_ID -t "My Novel"
Delete posts in bulk. Yeah, good luck with removing all trace of content from the web. But at least you can keep your blog tidy with little effort.
blurl -a list|grep 'Quote of the Day' | cut -d : -f 1 | \ while read id ; \ do blurl -a delete -i $id ; \ done ;
Happy Blogging!
Wednesday, November 11, 2015
puburl: Instant Command Line Publishing of Any File
As I'm continuing to flesh out blurl, my command line blogging utility, I decided I might as well tackle the issue of embedding images. The solution I arrived at was to develop a small program that would take an arbitrary file (say, an image), publish it to a place on the web, and spit back out a URL. I could then use this URL in the markup that I hand to blur. Of course, like any Unix'y command line tool, this little script would be far more useful than just powering command line publishing.
One constraint that I wanted to put on this program was that it should be idempotent*. That is, uploading the same file multiple times would always result in the same URL.
After a bit of hacking, I ended up with: puburl. It works like so:
$ puburl P1790020.JPG https://www.googledrive.com/host/0B53sMu55xO1GTGxreFg2SEoycjA $ puburl P1790020.JPG https://www.googledrive.com/host/0B53sMu55xO1GTGxreFg2SEoycjA $ cp P1790020.JPG snow.jpg $ puburl snow.jpg https://www.googledrive.com/host/0B53sMu55xO1GTGxreFg2SEoycjA
Note that regardless of what the file is named, the URL to it always remains the same.
puburl is built off of gdrive a simple command line utility for working with Google Drive. gdrive runs equally well on Windows as it does on Linux, therefore, so does puburl. To setup puburl you'll need to have gdrive authentication configured. This sounds more confusing than it is. Basically, take a moment or two to setup gdrive and puburl will be just about ready to go.
puburl works by storing all its content in a Google Drive Folder of your choice. It also renames every file you upload to the md5 value of the file itself. That's how the idempotent nature is established.
Finally, it's worth noting that the shape of the URL gdrive and other web sources suggest is:
https://drive.google.com/uc?id=[FILE_ID] or https://drive.google.com/uc?id=[FILE_ID]&export=download
However, I found this URL to be a bit too smart for its own good. In many cases Google adds a Content-Type-Disposition header to the file being downloaded. This causes a Save As box to appear, which in a typical Drive context is a good thing. But for my purposes was annoying; I wanted the content served inline.
Looking around, I found discussions about how you can host a website via Google Drive (who knew?). Taking a cue from these resources, I realized that the following URL structure dispensed with the Content-Type-Disposition header.
https://www.googledrive.com/host/[FILE_ID]
This seems to be exactly what I was looking for. I've now got a simple Unix command that turns files into URLs. Here's the code for puburl - Enjoy!:
#!/bin/bash PARENT_FOLDER_ID=0B53sMu55xO1GaEp1UGlPWWVVaTA if [ -z "$PUBURL_GDRIVE_CONFIG" ]; then echo "Missing setting of PUBURL_GDRIVE_CONFIG - set this to the path to your ~/.gdrive auth dir." exit fi GDRIVE="gdrive -c $PUBURL_GDRIVE_CONFIG" if [ -z "$1" ] ; then echo "Usage: `basename $0` file1 [file2 ...]" exit fi for f in "$@" ; do if [ ! -f "$f" ] ; then echo "Cowardly refusing to upload [$f], a file that doesn't exist" continue fi md5=`md5sum "$f" | cut -d ' ' -f1` found=`$GDRIVE list -n -q "'$PARENT_FOLDER_ID' in parents and title = '$md5'"` if [ -z "$found" ] ; then id=`cat "$f" | $GDRIVE upload -s -t $md5 -p $PARENT_FOLDER_ID --share |grep ^Id | sed 's/Id: //'` else id=`echo $found | cut -d ' ' -f 1` fi echo "https://www.googledrive.com/host/$id" done
*Yes, I've been waiting years to use idempotent in a blog post. Whooo! Mission accomplished.
Tuesday, November 10, 2015
HTML Content Migration, The Quick and Lazy Way
We're exploring a redesign of our shul's website, including a move to WordPress. Like any website migration, there's the question of moving over content. On one hand, the current site's HTML is pretty poor, so just copying the HTML into WordPress is a bad idea. On the other hand, creating each page from scratch in WordPress and copying and pasting the text in place is just too arduous to consider. What to do?
First things first, I wanted to get a hold of all the content in the current site. That's easy, I just did:
wget -r http://www.etzhayim.net
That left me with a directory full of messy HTML files. My first thought was to rig something up using Lynx and sed:
lynx -nolist -dump Education.html | \ sed '1,/The Wisdom Project/d' | \ sed '/Etz Hayim | 2920/,/All rights reserved/d'
(The use of lynx was inspired by this recent tweet)
That actually got me pretty close, but I figured I could do better. So I busted out PHP and threw every HTML cleanup trick in the book at the files, including Simple HTML DOM, strip_tags, string replacements and regular expression replacements. You can find the code that does all that here.
When I was finally done, I had scrubbed HTML content but no obvious way to get it into WordPress. Enter All Import. This superior WordPress plugin has definitely become part of my Hacker's Toolbox. I updated my PHP code to generate one large XML document. I then uploaded this XML document via All Import. All Import takes you step by step through the process and I was trivially able to import all the pages into the site.
If you find yourself needing to bulk cleanup a lot of HTML and want to use my code (aka: page-sifter), you'll need to provide a .conf.php file. This file contains site specific settings. Here's a sample to get you started:
<?php // What's the root document in your URL that contains the actually text of the site? // Use this to pull out the guts of the page, and discard the header, footer, and sidsbars define('SIFT_CONTENT_EXPR', '#content2'); // Turn relative URLs into absolute ones so that images and content resolves define('SIFT_BASE_URL', 'http://www.mysite.com/'); ?>
Stay Lazy My Friends.
Monday, November 09, 2015
Implementing a weekly hours summary using the Freshbooks API
It's official: we're moving the accounting side of our business away from Quickbooks to Freshbooks. Shira handles the financial side of things, so the switch doesn't have a huge impact on me. It does mean that the home-grown Google Spreadsheets solution I was using for tracking my time is being replaced by the slicker Freshbooks UI. And so far, I'm OK with that. I'm even more OK with the fact that Freshbooks has a Linux command line time tracking solution, which I haven't setup yet, but am excited to play with.
While Freshbooks has many nifty features (and more importantly, it's far, far lighter weight than Quickbooks), one that a few of my customers like seems to be missing. I wrote some custom PHP code to mail folks a weekly summary of the hours I've spent on their projects. That way, we avoid any end of month surprises. Because my previous time tracking solution was Google Docs based, writing code to pull from the spreadsheets was easy. Luckily for me, Freshbooks offers an API and it's just as easy to use.
This last weekend I whipped up a quick PHP script that I could wire into cron. Once a week, it grabs the appropriate time entries from Freshbooks and sends them in an e-mail to the customer. You can view the code here. If you find yourself needing some feature Freshbooks is missing, perhaps it can be of some use to implement it?
Here's a few notes that may be handy if you want to try running this code yourself:
Supply your own .conf.php file. This file contains all the sensitive information about my configuration, so obviously I didn't check it into Freshbooks. It should have the following shape:
<? define('FB_KEY', 'Your Freshbooks API Key'); define('FB_DOMAIN', 'The first part of your Freshbooks domain name'); define('EMAIL_FROM', 'accounting@yourcompany.com'); define('EMAIL_SHELL', 'email'); function all_customers() { return A( array('client_email' => 'contact@companya.com', 'to' => 'bob@companya.com,' . 'alice@companya.com,' . 'accounting@companya.com') ); } ?>
all_customers() returns an array of all the customers you want to e-mail.
Checkout lib/freshbooks.php to see the wrapper I wrote around the Freshbooks PHP API. I wanted to add a level of convenience around this very helpful library. Additionally, there were some assumptions I could handle at the API level (such as halting if the API returns an error), rather than letting my higher level code deal with them. See: fb_invoke(...) for the core helper function I wrote.
Don't get me wrong, the Freshbooks PHP API is really handy, especially because the Freshbooks API isn't REST based. The PHP API takes care of preparing and parsing XML messages, which while something I've done plenty of times in PHP, is nice to have already done for you.
Don't forget to customize snippets/email.php. Code under the snippets directory is where the formatting of the e-mail takes place. Unless you want to advertise my company, I'd suggest tweaking this so your company name is splashed across the e-mails.
Hope you find it helpful! Grab the code here.
Friday, November 06, 2015
Two Practical and Useful Preparedness Resources
The Emergency Preparedness community has a reputation for getting, well, extreme. One minute you're reading Arlington County's recommendations for dealing with an Active Shooter, and the next you're on SurivalistBoards.com mulling over this nugget: How to fight people armed with automatics when you have only bolt and semi firearms? Hey, you just never know, right?
With this in mind, I like to pay special attention to emergency resources that are not only sane, but also bring a fresh and practical perspective to the topic at hand. I give you two resources I've recently tripped over on the topic. While these vary significantly, they both hit a number of related themes: (1) life altering disasters aren't just for some random Shmoe halfway around the world, they can happen to you. (2) No matter how prepared you are, enduring these events is going to be miserable. (3) You've got to plan not only to "survive" the event, but to come out on the other side of it. While this approach may seem obvious, most preparedness sites seem to fall short of thinking of the whole picture.
Anyway, I found these two guy useful:
Disaster Preparedness Tokyo - Apparently this book was distributed to Tokyo residents, and kicks off with the grim statement: It is predicted that there is a 70 percent possibility of an earthquake directly hitting Tokyo within the next 30 years. Are you prepared? Do they have your attention yet?
The guide, available as a series of PDF downloads goes through not only the preparation each family should go through, but what life will probably be like during and after said Earthquake, and resources one can use to rebuild their life once there's an opportunity to do so. It's sobering to say the least, but also quite practical. Most of the preparedness chapter applies to those outside of Earthquake zones, and as DC residents found out in 2011, even those of us who don't think we have to deal with Earthquakes, do. Chapter 4 titled Survival Tips is the "fun stuff," and gives practical suggestions for operating in a disaster area. Here's a few of the hacks they suggest:
Listening to Katrina - Does the above guide seem to governmenty for you? Yearning for something a bit more conversational? Then Listening to Katrina may be exactly what you're looking for. This half-story, half-workbook takes you through the world of emergency preparedness via the lens of someone who survived Hurricane Katrina. It's written by someone who was and is part of the Prepper scene, but has been educated with a healthy dose of reality.
I'm only about half-way through the first section of three sections, so who knows, I may end up retracting my recommendation for it. But so far, I've been surprised at the insights provided and how sane and thoughtful they've been. Unlike the Kymbaya, let's all join together and get through this tone that the Japanese resource provides, this is distinctly (scarily?) American. In the parts of I've read, there's definitely an anti-Government sentiment, but that's not the main gist. Here's a sample of the kind of advice dispensed:
At 10:15 PM on Sunday, August 28, 2005, after being on the road for 15 1/2 hours, we crash landed in Houston, Texas.
This was both a disastrous failure of planning, and the best thing we could have done.
"But wait! You're supposed to tell us about death and destruction and looters, Oh My! Besides, you said we were going to document our Plans next!"
Well, yeah, but I warned you that I might skip about. Now, where was I... AH! Yes. Crash landed.
You see, we had no idea where we were going, except that Andrea has a lot of family in Houston. Not the kind of family you see on the Jerry Springer show either, but Family. With few other options, none of which was more appealing, we crash landed at Andrea's mom's brother's house. Uncle Ken and Aunt Aggie.
I had enough composure to smile and make pleasantries while we unloaded our cars and began occupying one bedroom - which had been vacated by one of the cousins who had to double-bunk. We had brought a queen sized Areo-bed with us, and Madeline's port-a-crib. The bedroom we were in came furnished with a desk and a single bed. Once the Areo-bed was inflated, there was about 10 square feet of free space on the floor by which we could shuffle around. I set up Virginia's DVD player on the desk, and we were about done.
I'm here to tell you, though, that while that sounds somewhat meager, I couldn't have been any happier in a Hollywood mansion.
I wasn't entirely sure of my protocol with Ken and Aggie. I had met them, yes, but now here I was with wife and children like some kind of refugee. Refugee is, in fact, the right word. Ken pulled me aside and we had a talk which clarified my situation without any reservation. Actually, all he said was four words.
"This is your house."
They were the four words I guess I needed to hear because I suddenly felt a tremendous mental, emotional, physical, and spiritual relief.
...
That's a part of HYST that the survival books never seem to cover. You don't just have your sh*t together for you, but you have your sh*t together so that if a situation arises that you suddenly find refugees on your doorstep that you aren't at all bewildered by this. We are going to start documenting The Plan now, but as we do we want to think of that Plan from two directions. The first direction is how we make that plan serve ourselves, but the second direction is how we make that plan serve other people who are important to us - even if we may not know those people very well.
This is one of the things that pre-Katrina I had thought about, but never seriously considered.
Like I said, chatty and colorful. But awfully practical, it seems, too.
Go, prepare. Just don't fall off the deep end doing so. Incidentally, I found about the Japanese Preparedness Guide on SurivalistBoards.com. So there you go, it's not all guns and government bashing over there (just mostly).
Wednesday, November 04, 2015
It Actually Works: Dental Floss as Cutting Tool
As a guy, I'm not supposed to have think about things like facial beauty products. But, a few weeks ago, the little patches of dry, red skin on my face had grown to big patches of dry, red skin and Shira informed me that we had to do something about it. In fact, she wouldn't let me leave the rash / skin care section of CVS until I bought *something* to try on my face. After looking at all the promises being offered by the various miracle products, I finally settled on a bar of African Black Soap, Eczema & Psoriasis Therapy. It got solid reviews on Amazon and figured as a black bar of soap, it was manly enough to buy with confidence.
So I used the soap and a bit of cortisone cream, and between the two, my face cleared up. Success!
This last trip, I found my face was again starting to break out. Rather than re-invent the wheel, I found a CVS and purchased a bar of the same soap. It seemed to help.
Lesson learned: I should be carrying a small chunk of this soap in my Dopp Kit, so I can use it while traveling. But what's the best way to get such a chunk?
I decided to give the old hack preferred by Plumbers, Chefs and Escaping Prison Inmates: use dental floss as a cutting tool. Whether you're cutting through PVC pipe, cake or steel prison bars, the premise is the same: use a length of floss as a saw blade to get a clean and easy cut. And I'm glad to report: the process worked perfectly with the bar of soap.The heat generated from moving the floss back and forth sliced through the soap like a knife through warm butter.
The result was a travel size version of this large bar of soap. Dental Floss to the rescue!
Tuesday, November 03, 2015
Hiking and Eating for a Good Cause
Today I did my Scouting Good Turn by helping Spencer and Brady earn their Cooking Merit badge. It couldn't have been more of a pleasure: we hit the trail for hiking and eating, and did so on perhaps the most glorious weather day of the year.
We did our little adventure day at Prince William Forest, which provide us with a 6 mile loop through stunning fall foliage. On the cooking side of things, I had boys make field expedient alcohol stoves, which we used to boil water for lunch. Sure, it took 25 minutes to boil a cup of water, but it got the job done. We also used my Pocket Rocket stove, which boiled two cups of water in about 2 minutes (and sounds like a jet aircraft is taking off while doing so!). The boys had a Mountain House backpacking meal for lunch, and I had a variation of Trail Tacos as well side of mashed potatoes with raisins, yum!
Good times!
Monday, November 02, 2015
Boston Fun: Quincy Quarries, A Rock Scrambling Good Time
This last Sunday morning we had a few precious hours to play with the Boston Kiddies before we needed to head back to the airport. The weather was just warm enough for an outdoor activity, so we headed to Quincy Quarries for a bit of hiking, history and rock scrambling.
Quincy Quarries has a bit of a grizzly past; the quarries used to be massive holes filled with water that reckless kids would jump into, leading to injury and death. Thanks to YouTube you can actually see people leaping from the cliff walls and landing in water 100+ feet below.
Fortunately, someone got the bright idea to fill the quarries with dirt from the Big Dig. Now, the Quarries are mostly open green space with rock-climber friendly granite walls. Judging by all the alcohol containers and broken glass, teenagers still frequent the area, but so do rock climbers and others who want to take in the gorgeous scenery. Much of the surrounding granite walls are covered in colorful graffiti; some find this enchanting, Shira found it pretty off putting. I for one was pretty cool with it, and I think the splash of color helps make the area even more eclectic.
While scaling the cliffs needs to be done using real rock climbing gear, we had no problem finding a number of paths up the rocks that were challenging, yet safe for the kids to tackle. All four kids absolutely love climbing on and around rocks, and are pretty much fearless. At first glance, the Quincy Quarries area isn't especially large. But that was perfect for the kids, as they could run around, climb on rocks, and just generally be kids, all without having to go any great distance.
So that explains the hiking and rock scrambling above, you may wonder where history came into the equation. As we tramped through the area, we seemed to approach a road and trail head. What we actually found was an incline filled with long granite bars:
What you're looking at above is the remnant of the Granite Railway:
QUINCY, Massachusetts, a historic town about eight miles south of Boston, is distinguished the world over as the home of presidents, for here John Adams and John Quincy Adams were born. Shipbuilding, too, has spread the fame of this delightful old town. Many are familiar with the fine granite which for over a century has been quarried here, but few are aware of the important part that Quincy has played in the awakening of America to a new era in transportation. On the morning of October 7, 1826, at Quincy, the first railroad in America was opened, and under the direction of a young engineer by the name of Gridley Bryant, the first cars drawn by horses passed over it, carrying huge blocks of granite from the Bunker Hill Quarry to a wharf on the Neponset River, a distance of two and three-quarters miles.
To grasp the full significance of this event, we must know something of the condition of the country in 1826, for, crude as the little railway may seem to us today, it was, nevertheless, the germ from which the whole gigantic railroad system of America has sprung. To build even Gridley Bryant's rough but mechanically perfect contrivance was, in 1826, considered by many of the country's citizens as "visionary and chimerical," and it would not have been built at that time were it not for the patriotic motive behind it as the most expeditious means of transporting granite for the erection of the Bunker Hill Monument.
That's right, the kids were literally standing on the very first public railroad in America. How cool is that? The kids, and Dovid especially, are fans of Thomas the Tank Engine, so they could at least partially relate to this remarkable site.
Like I said, hiking, history and rock scrambling, all 20'ish minutes from Boston. What good times!
Boston Fun: The Waterworks Museum at Chestnut Hill Reservoir
On our last trip around Chestnut Hill Reservoir in Boston, we noticed a sign for the Waterworks Museum located nearby. Unfortunately, we had just walked around the reservoir, so dragging 4 already tired kids into a museum was going to be a recipe for disaster. We smartly held off on checking it out.
This last Shabbat, after lunch, we headed over to this free museum. We were met by a kind volunteer at the door, who got us setup to watch a short movie. Yelper's who liked the museum, weren't that impressed with the movie. But I actually found it quite informative and the kids found it entertaining. It certainly gave some key context to what we were looking at. Once the movie ends, you're free to wander through the large space that's filled with two (or is it three?) massive pumping engines. They are exactly what you'd hope late 1800's technology would be: massive wheels, gears, spiral staircases and dials.
Dovid was absolutely fascinated by the short videos that showed how the pumps operated. At one point, Tzipora got a little intimidated by the whole scene and explained she was sure it was going to turn on any minute and scare her. Chana took the whole scene in, and while we went to an upstairs observation deck, she started constructing an aqueduct out of the blocks they had on the table, making sure to bring fresh water to the people in the city (just like the movie advised her). If any of these children turn out to be civil engineers, it's fair to say that they got their start at this museum.
A few weeks ago I was talking to my Dad about some research he had conducted measuring E. coli in local water sources. Turns out, at the site of the Waterworks Museum was the Chestnut Hill Reservoir Biological Laboratory, the country's very first water testing facility. It was operated by George C. Whipple. That means that I was standing on the grounds that served as the origin for the work my Dad was conducting; just remarkable!
If you're in the Boston area, you should really plan to hit this remarkable space. Calling it a museum may be a bit of misnomer, as it's really just a room filled with some massive machines. You feel like you're in a working facility, rather than a staged museum. And while Chestnut Hill Reservoir now seems like a quaint little park, at the time, it was a state of the art water delivery system, helping to keep a thriving Boston in fresh water. This is truly a glimpse into one of the behind the scenes marvels that we so easily take for granted every day. Oh, and it's free, so if you spend 5 minutes staring at it and walking out, no harm done.
As noted above, we visited on Shabbat, so I don't have any photos to share. To give you an idea of what the space looks like, check out these two pictures: