Thursday, March 15, 2018

An Old Friend Gets A New Look

A lot has changed since I started working as a programmer in Washington, DC area nearly 20 years ago. Hardware has gone from physical to virtual with specs that I could barely have imagined. I've traded PHP for Java as my daily server side language of choice. Gone is the office and coworkers, replaced by programming in my pajamas and a 0 mile commute.

Some things haven't changed: the thrill I get from tracking down and fixing a bug, the joy of implementing an elegant solution to a problem and my chair. Yes, my chair.

This old guy has been with me since day one at Amazing Media. When the company fizzled out, I was able to take my trusty steed home with me. He found new life as my office chair when I started my own company.

I marvel to think of all the ideas I've had—some great, some horrendous—while sitting in this chair.

A few years ago the plastic on the arm rests started to disintegrate. I grabbed the first solution at hand: a roll of atheltic tape, and patched him up. That was a mediocre solution at best, because the tape would eventually peel, get all nasty and require another layer of tape.

I realized a couple of weeks ago that I now had a new tool in my toolbox to solve this conundrum: sewing. So yesterday and today, I upcycled a pair of comfy PJs into custom arm covers.

One one had, the process was super simple: cut out rectangle of fabric and sew in 4 channels to hold some heavy duty fishing line. On the other hand, nothing is ever that easy. I finally ran out of thread in my bobbin so I had to learn how to spool a new one (seriously, what a satisfying experience!). And of course, I made the first one too large and had trim and resize it. But all in all, I think the project was a success.

These days, I tend to stand at my desk more than sit. But the chair, he's still there. Ready to support me, regardless of whatever challenge we're facing.

Tuesday, March 13, 2018

A Powerful Scene at the US Capital

My brother caught this stunning picture of the #notonemore monument on the lawn of the Capital. It shows a slice of the 7,000 shoes that were on display, each one representing one of the 7,000 lives lost since the Newtown shooting.

While this display is only 10 minutes from my house, I wasn't able to make it out today to catch it in person. So a huge thanks David for being my eyes. So well done!

Monday, March 12, 2018

So Useful: Yet Another Mail Merge

If you use Gmail and Google Sheets, you need to know about Yet Another Mail Merge (YAMM). This plugin allows you to draft an e-mail in Gmail, and send it out to recipients in a spreadsheet. The e-mail contains tokens which correspond to the headings in your spreadsheet. Basically, it does what Old School mail merge used to do with Word and Excel, minus the joy of stuffing envelopes.

I'm working on a project for shul, and I wanted to send a reminder out to the participants that entries were due in a week. I could have sent a mass e-mail by including everyone in the BCC header, but using YAMM is a far better solution. The obvious advantage is that I can personalize the e-mail, including specific details about each person's piece of the project (which is already being tracked in a spreadsheet). YAMM also reports on who has opened and replied to the e-mail, which is an unexpected bonus.

Here's a crude example of how YAMM works:

Step 1: Draft an e-mail

Step 2: Organize your data

Step 3: Merge and send out the e-mails

At times, nothing beats a specialized e-mail platform like MailChimp or evite. But when you've got a job too small or specialized for these services, and too cumbersome to handle manually, YAMM is the way to go. Try it, and I'm sure you'll add it to your toolbox.

Here's a video tutorial to get you started:

Friday, March 09, 2018

Managing Multiple Android Devices for the Lazy and Impatient

Recall that I've got a handful of Android devices that need to be configured, and not enough time and patience to do so. I progress on this challenge by writing a shell script around adb that pulls down, pushes up and deletes the apps from a phone.

While this allows me to install and uninstall apps in bulk, it doesn't account for app settings. In my case, settings are key because I need to lock down these devices to insure they remain in content creation mode only (Sorry, no YouTube or Fruit Ninja here). Previously, the ability to lock out apps was provided by Apex Launcher; a slick app, but one that was both too complex and not bullet proof enough for my needs.

I was able to solve both my configuration problem and improve the launcher experience by taking advantage of two new facilities.

First, on the master phone, I installed Kids Place - Parental Control. This is a far simpler launcher than Apex, and is a natural fit my use case. Kids Place is one of many launchers that provide a very simple user experience on the front end, while letting the parent configure the available apps on the back-end. What makes it unique is that the free version is fully functional and doesn't display ads. The pro version offers some nice to haves such as controlling the time of day the device is available and allowing you to put a custom photo in the background. But for my purposes, these features aren't needed and the free version is ideal.

Next, I took advantage of the backup ability that adb offers. This can be configured to not only grab the app files, like I had previously rigged up, but also grabs the apps settings. This command line does the trick for me:

  adb backup -shared -nosystem -all -apk -f master.ab

The nosystem flag insures that only the add-on app configurations are stored in my master snapshot. The apk flag insures that the backup contains the app itself, which makes for easy device restoration.

Once I have my master backup, I can use 'abb restore' to create a cloned.

  adb restore master.ab

The process isn't perfect. For example, it take a few screen presses to complete. But it's far simpler than having to hand-configure device after device. Once the restore is done, and the Kids Place launcher is activated, I've got a neat clone of my master device:

This looks to be the Android Enterprise Device Management strategy I was originally after. I can install and configure apps on one device, and painlessly replicate this effort to its siblings.

Bonus Pro Tip: The backup file generated above can be unpacked with this one liner:

  ( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 ../non_system.ab ) | tar -xvf -

This allows you to get a behind the scenes look at the data your phone is storing; something that is surprisingly difficult to do. (It's your phone after all, yet Android permissions work tirelessly to avoid giving you access)

Thursday, March 08, 2018

Around Town

Just a few snapshots I've accumulated on the 'ol camera phone. The sun is setting later; the trees are budding; Spring is trying to spring.

Wednesday, March 07, 2018

An Accidental Possibles Bag

How we managed to accumulate so many reusable shopping bags I'm not sure, but currently I've got quite the heap of them. As an experiment, I thought I would try re-using one of the bags as a source of fabric for a sewing project. I grabbed a Walmart bag, cut it apart and went to work.

Ultimately, the project was a bust. But, as I was cleaning up, I found myself looking at a scrap of fabric. It seemed just the right dimensions to turn into a big 'ol pocket. I added a belt loop, sewed it together, and voila! I had a crude possibles bag:

The dimensions are roughly 5" wide, 9" deep. My first thought was that it would be an ideal trail snack bag. As far as I'm concerned, you can never have quick enough access to M&M's. I didn't really think this through, so the bag had no way to close it. Given how deep it is, however, I'm not convinced this matters.

After experimenting with uses for the bag, I decided to make a version with a closure. Velcro would have been the obvious choice. However, I'm not a huge fan of how loud Velcro can be, and besides, I didn't have any on hand. What I did have was a bunch of magnets. So today, I made version 2.0 of my Possibles Bag, with magnets sewed in place to keep the bag closed.

The magnets seem to be doing the job well, though time will tell if they're clever or annoying.

As for using reusable bags as a source for fabric, this is already known to work. My little project only further adds to the evidence. The Walmart bag material is incredibly lightweight and seems durable (the no-closure bag weighs less than ½ an ounce!). The original bag was heat sealed, rather than sewn. So perhaps sewing this fabric was a bad idea, but still, it seems to be holding. I've got some really heavy duty Trader Joe's bags that I think I may experiment with in the future.

Here's one more action shot of the project:

Tuesday, March 06, 2018

Review: To Siri with Love: A Mother, Her Autistic Son, and the Kindness of Machines

In To Siri with Love: A Mother, Her Autistic Son and the Kindness of Machines Judith Newman manages to take an incredibly difficult topic and turn it into an entertaining, can't-put-down book.

I recall vaguely having heard a segment on NPR or the like about a mom heaping praise on Siri. The idea was that her autistic child could engage with Siri in a way that was both novel and educational. Siri had unlimited patience to talk about any topic, and has a primitive set of manners that helped her son gently learn hard to grasp social lessons. When I saw To Siri with Love on the bookshelf at the library I thought it must be the same story teller, so I picked up the book.

I'm certainly glad I did.

The vast majority of the book has nothing to do with Siri or any other tech. It's a mother's story of her raising twin boys, one of which is autistic. The whole emotional spectrum is here: from joy and boundless pride, to fear and absolute frustration. For those of us peeking in on this world from the outside, I'm thankful that Newman took the time to show us the full range. As I was reading the book, I found myself at times cringing internally, knowing that Newman would almost certainly take flak for being so open. What Mom wants to admit that her son has limitations, much less limitations that make him less able to function in society.

Mostly, I'm thankful to Newman for helping further fill in a picture of what it must be like to live with or even be, autistic. If we didn't understand what it meant to be blind, we'd consider those without sight clumsy, lazy, disinterested in learning and perhaps just dumb. But once we understand they simply can't see the obstacles in front of them, our perspective vastly shifts and we find that blind people are capable of everything a seeing individual is. Newman describes a sort of social and emotional blindness in her son that leaves us quick to judge him as things he isn't. Yet, once we understand his limitations how he's different, we can see he's so much more than we imagined.

Of course, I recognize how important it is to take this as a sample size of 1, with a condition that is still far from well understood. So yeah, don't read the book and think: "OK, now I get autism." But still, getting a view into Newman's son's life, with all his struggles and successes is invaluable. And there's plenty of humor and wit to keep the book moving.

Update: As is my habit, after posting this I went over to Amazon to peek at the reviews. I like to hold off on reading reviews until after I've posted my own comments so I'm not too skewed by anything I read there.

At first I saw that the book had 99 reviews and was rated 4 1/2 stars. Huh, I thought, people liked this book. And then I started reading. Ouch.

As I suspected, many were not amused with Newman's book and leveled quite a few charges at her. Some I agree with, some I don't. Here are some of the biggies.

She massively and hurtfully violated the privacy of her child, which is inexcusable. I appreciate this charge, but ultimately don't think it's a deal breaker. Yes, she's putting her entire family on display, but I think there's a purpose there that may allow the ends to justify the means. I think it's noteworthy that she doesn't just expose her autistic son's life, opting to share dirt on everyone. With that said, I'd be downright mortified if my Mom published a tell all of my birth to Bar Mitzvah.

Her consideration of sterilizing her son falls somewhere between troubling and demonic. This I agree with. I suppose I can appreciate her sharing her deepest thoughts, even if they seem wrong headed. Ultimately, it's the book itself and her own words that seem to show just how wrong it is to make this medical decision for her child. She herself says that 'delays' are just that, 'delays.' So deciding that your child should go the rest of his life without the option of having children just seems wrong.

She doesn't love her son. She wishes her son wasn't autistic. She likes her neurotypical son better. I'm not buying these arguments. Yes, she's open about the challenges of raising her child. And what parent wouldn't want their child to have an easier life? If my Mom could have waved a magic wand and made me less socially awkward, a better reader and not have dyslexia, she would have done so. But just like my Mom accepted and loved me, for me, so do I get the sense does Newman and her child.

I appreciate the individuals who took time to write extensive reviews on the book. A number of the reviews are written by folks who identify as autistic. I can only imagine what it must be like to have a book that seems written about you, but gets it so wrong.

So here's the thing: read the book, then go read the reviews, then go continue to be open minded and learn more.

Monday, March 05, 2018

Hiking Maryland Heights: The Overdue Sequel

Nearly 12 years ago we hiked Loudoun Heights, which is located near Harpers Ferry. Only recently did I discover that across the river was an equally impressive and similarly named hike: Maryland Heights. It took us over a decade, but this past weekend, we finally knocked out this companion hike.

Maryland Heights promised views and civil war remnants, and delivered on both of these. We started the hike in Harpers Ferry, which meant we got to walk across the very cool foot bridge, and then made our way down the C&O canal a bit to the trail entrance. From there it was a slog up hill, but one totally worth it. We stopped at various annotated sites to try to imagine the troop activities and infrastructure that was in place during the Civil War.

Every time I felt a bit winded, I imagined the herculean effort it would take to drag the massive guns and ammunition into position. Consider the 9,700lb(!!) Dahlgren gun that was positioned on the top ridge of the mountain. Each round it fired weighed nearly 100lbs and had a range of 2 miles. That's a lot of schlepping.

The stone fort and surrounding walls are in pretty good shape considering they're left to the mercy of the elements and hikers. The view from the cliffs, however, has to be the true highlight. It's like you've been scaled down to HO size and been dropped into a picturesque train model. The view into Harpers Ferry from the cliffs is just too perfect.

We finished up our hike at around 3pm and the crowds still seemed to only be growing. I can't imagine how overrun this hike is on a warm Spring day. It's no surprise this is a popular destination, so keep that in mind when scheduling this hike.

We finished up our hike in Harpers Ferry and spent some time trying to soak in the local history, of which there is an obscene amount to digest. I'm sure I was taught the details of John Brown's Raid at Harpers Ferry, but re-reading them, I'm left with only more questions. Was his violence based campaign just? Was he a hero or a terrorist? Was his action a spark that led to a greater good? Was it OK for figures like Emerson and Thoreau to gloss over Brown's violence and portray him as a martyr?

So many questions and so few answers. I think a quote from this article, penned a few days after John Brown's raid, bears repeating:

Never before was such an uproar raised by twenty men as by Old Brown and his confederates in this deplorable affair.

There will be enough to heap excoriation on-the memory of these mistaken men. We leave this work to the fit hands and tongues of those who regard the fundamental axioms of the Declaration of Independence as "glittering generalities."

Believing that the way to Universal Emancipation lies not through insurrection, civil war and bloodshed, but through peace, discussion, and the quiet diffusion of sentiments of humanity and justice, we deeply regret this outbreak; but remembering that, if their fault was grievous, grievously have they answered it, we will not, by one reproachful word, disturb the bloody shroud wherein John Brown and his compatriots are sleeping. They dared and died for what they felt to be the right, though in a manner which seems to us fatally wrong. Let their epitaphs remain unwritten until the not distant day. When no slave shall clank his chains in the shades of Monticello or by the graves of Mount Vernon.

History, views and a delightful day in the woods. What more could you ask for?!


Related Posts with Thumbnails