Thursday, April 19, 2018

Flight Audio from Southwest 1380 - Listen and be in Awe

The Air Traffic Control audio from Southwest 1380's emergency landing is nothing short of remarkable. As has been widely reported, the pilot and co-pilot remained incredibly calm and collected, which this audio shows. But it also shows just how well the whole system worked.

Planes needed to be re-routed to make way for SW 1380, which meant that Air Traffic control and quite a few pilots had to be quick on their toes. It also seems to me that the whole protocol of Air Traffic control had be flipped. In a moment, it went from the tower directing a pilot, to the pilot telling the tower what she wanted. All this happened seamlessly, as though this sort of thing happens all the time.

I love how at 1 minute, 27 seconds in the pilot, who is about to be switched to a new frequency, still manages to sign off with a Good Day. Amazing.

If you want to study resilient, adaptive and fault tolerant systems, it seems like Air Traffic control is good place to start.

Wednesday, April 18, 2018

The Fun, Yet Impossible, Route at San Lorenzo Canyon

Here's a tip: if you see a route on All Trails that looks easy, yet none of the reviewers managed to complete it, assume you're going to fail too. That's kind of, but not quite, the mindset I approached San Lorenzo Canyon in New Mexico with. It's a 1.5 mile loop that none of the reviewers actually found. But still, how dicey could a short loop be?

I was pleased to see signage leading us towards San Lorenzo Canyon from the highway, and while the roads weren't great, our sedan had no problem traversing them. We drove until we reached what Google Maps considers the start of the canyon and parked the car. From there, we started hoofing it down the main canyon. A few folks in vehicles passed us and I began thinking I'd picked a location that was more car than hiker friendly. Still, the canyon scenery around us was quite impressive. There were steep walls, impossibly teetering rocks and everywhere you looked interestingly shaped formations. If all we were going to do was stroll down a road for a bit, I was satisfied with that.

As we neared the end of the main canyon the All Trails route suggested we veer to the right. And sure enough, there was an obvious trail to follow. So we followed it and found ourselves off the main road and winding our way through more impressive scenery.

We scrambled our way through a few obstacles, but most of the trail was easy going. Eventually we found ourselves at a dead end. However, there was a prominent cairn marking what appeared to be a steep trail leading out of the canyon.

So up we went, and emerged from the canyon to an amazing view. Not only did we have the view, but I had serious confidence that we'd be able to follow the All Trails route. Once on top of the canyon, we traced the ridge making our way back towards the car.

And then we hit our first snag. The trail we were following stopped at a cliff wall. We may have been relatively close to our car, but without rapelling gear, it was completely out of reach.

We backtracked to the point where Shira had seen a cairn we'd walked by. And sure enough, upon closer inspection, the cairn pointed to a side trail. We took it, and sharply descended to the canyon floor again. From the distance I could see a clearly marked trail, and before I knew it, we were on high quality trail once again making our way to the car. And because we were on the canyon floor, we didn't have to worry about hitting a cliff. Once again I celebrated our good fortune, knowing that *this time* we'd have no problem following the All Trails route.

And then the canyon walls started to close in and we found ourselves at what seemed to be a dead end. There was a 6 foot or so drop, leading to a who-knows-how-far drop beyond that.

We backtracked looking for other trail options. By this point, our 1.5 mile hike had turned into a 4 mile adventure. Because the hike was so short, we'd started late in the day, and now sun-down didn't seem so far off. I was humbled by the surroundings. There was no guarantee that any of the canyons had obvious connections between them. I suddenly had visions of hiking out by flashlight, or worse, having to hunker down and spend the night huddled under a space blanket. We'd left a note on our car saying we were out for a day hike, but would anyone see it?

Ultimately, we back-tracked our route completely and made it back to the main road without incident.

So here's the deal with San Lorenzo Canyon: it's beautiful, and the hiking is awesome. But definitely approach it with care. We tracked our route with Backcountry Navigator, which I highly recommend. We also had plenty of water, snacks and standard emergency gear, which provided another safety net. While these may be standard hiking precautions, you might be tempted to skip them on a 1.5 mile loop. Don't. This landscape, while breathtaking, doesn't mess around. But with those precautions in place, San Lorenzo is an awesome place to explore.

Here's the route we took. Hopefully you can learn from our experience.

We didn't see a whole lot of wildlife while in the canyon, but we did see a crazy looking caterpillar. When we Googled its description to learn the identity, the first site we found was this one. Apparently, we'd found a Northern Giant Flag Moth. What's even more surprising is that photo on that page, documented 12 years ago, was also taken in San Lorenzo Canyon. How crazy is that?

Tuesday, April 17, 2018

Review: Eleanor & Park

For the last few weeks my guilty pleasure hasn't been a sketchy reality show or rocking out to some cheesy 80's music. It's been listening to Eleanor and Park by Rainbow Rowell. I started this random audio book one restless night and quickly became hooked. The book is almost certainly targeted to teens, but I couldn't put it down.

Eleanor and Park is two stories in one. First, it's the tale of a young lady who's had the system fail her. Her Mom is stuck in an abusive relationship, and therefore so are her and her siblings. Her bio-dad can't see beyond his own selfish needs. Most of her teachers, and even the police are of no use and often make her situation worse. There's no sign of social services, helpful social programs or loving foster parents. And if that weren't enough of a burden, she's living in utter poverty. Needless to say, this is a tough story-line. Eleanor is written as a wonderfully strong character who faces this adversity with grit and determination.

As a foster parent, I can't help but feel enraged by this part of the book. I'm sure this sort of thing happens in communities all over the country, but it just shouldn't be so. Eleanor, her siblings and her mother are enduring abuse and neglect that no individual should face. The Step-Dad belongs in prison, or at least out of the picture. Social services should be helping Mom get on the right track. The police should be protecting Eleanor and her family. Teachers should be standing up for her. Foster parents should be providing a safe place for Eleanor and her siblings to live while the whole mess is sorted. While it may not be this way in the the book, we should be striving every day to make it this way in the real world.

The second thread in Eleanor and Park is a love story. It's about two teens slowly realizing that they are smitten with each other, and all the clumsy, terrifying and euphoric feelings that go with this. I'm not sure if teens today can relate to this story, but man, I could. It's about capturing the moment when you first realize your crushing, or holding another's hand, or naming your relationship or uttering that first I Love You. It's about the self doubt that comes with recognizing every flaw of your own, yet seeing the other as flawless. It's beautiful and scary and serious and adorable and from the outside it looks completely ridiculous. Such is the power of the potent drug that is love.

Perhaps you were a smooth teenager who gracefully traversed the mine field that is young love. In that case, skip this book. But if you weathered the storm and want a little reminder of what those awkward, amazing moments were like, give the book a read.

The whole time I was listening to this book I kept thinking about this short film. I think it elegantly captures the what the two main characters are going through. Here, enjoy:

Monday, April 16, 2018

The VLA - Very Large and Very Cool

There's no denying it: the Very Large Array is a cool place to visit. The mammoth sized dishes are quite the spectacle, and the closer you get to one the more you appreciate its massive size. And, it's also surprisingly dynamic. Thanks to railroad tracks and large transporters, the dishes are regularly picked up and moved. They can be clustered in a .64 mile area, or spread out across nearly 23 miles. When we saw the dishes, they were spread out, with the farthest dishes being little more than dots on the horizon.

For me, however, the VLA is more than an engineering marvel. It's also a fantastic example of thinking outside the box.

When you want to observe the heavens, you wait for nightfall and look up. Light from objects in the sky is collected in your eyeballs and you see the night sky. But visible light, as you no doubt learned in your high school physics class, is only a tiny portion of the electromagnetic spectrum that objects emit:

If a twinkling star emits light you can see with your eyes, surely it emits other electromagnetic waves. And if you can collect and analyze visible light, surely you can collect and analyze these other waves. And that's, at an extraordinarily simple level, what the VLA does.

The actual discovery that you can use radio waves to analyze the heavens comes from research Karl Jansky conducted back in the 1930's. He was tasked to find forms of static that would interfere with a possible transatlantic radio system. Can you think of a less inspiring task? And from this, he discovers that he can observe the Milky Way using radio waves. What an amazing example of how basic scientific research can alter our world in ways never imagined.

By thinking outside of the visible spectrum, astronomers are able to create the largest, most expensive, and most sophisticated ground-based astronomical instrument ever built.

And if that's not enough for you, there are also a herd of antelope grazing on the grounds. Antelope! How cool is that?

Wednesday, April 11, 2018

Gotcha of the day: A recipe to keep cron from crushing my server

I've got a customer who uses to provide image optimization for their WordPress site. Using the very cool wp command line plugin, it's possible to setup a cron job that processes images in the background.

*  *  *  *  *  /usr/local/bin/wp media krake --limit=20 > /dev/null 2>&1

Once a minute, the system tries to optimize up to 20 images. If someone uploads a whole bunch of images, the system will temporarily serve non-optimized files. But over time, the system catches up and all is good.

That is, until has an outage. Needless to say, I found this out the hard way. The problem is rather than gracefully timing out, the wp media krake command just hangs. Once a minute cron diligently kicks off yet another wp command. This repeats until the box crushes itself.

As I imagined solutions to this problem, I pictured myself hacking the krake code or implementing some general purpose time-out wrapper for cron jobs.

But as I mulled the problem over, I realized that my solution need not be so complex. While I was focused on the lack of a timeout that kept the processes hanging, an equally valid approach would focus on insuring only a single instance of wp media krake was ever run. To implement that, I'd need only check for a lock file before launching the wp command.

And of course, Unix already has a command to implement exactly this. It's flock. Using flock is trivial: you provide it with a file to use as a lock and a command to run. If that file is locked, the command either hangs until it can proceed, or if configured as such, refuses to run.

For example, in one shell I run:

flock /tmp/foo -c "sleep 10; ls"

And in another shell, I run:

flock -n /tmp/foo -c "echo 'Whoo!'"

As long as the original command is running (which takes at least 10 seconds), the second command will fail.

How have I gone my whole life without knowing about flock? This is awesome.

So rather than having to hack wp media krake, or heck, write any code at all I've solved my problem with a simple command line change.

*  *  *  *  *  flock -xn /tmp/krake.cron.lock -c "/usr/local/bin/wp media krake --limit=20" > /dev/null 2>&1

Next time goes down (may it not be for 120 years!), the cron command will hang. But that's OK, because a minute later, the lock is still in place and flock will refuse to launch another instance.

Bye-bye self-created DOS attack; hello server that can trivially weather a 3rd party outage.

Monday, April 09, 2018

Rethinking My Stance On Writing In Books

I come from the school of thought that says a book should be kept in its most pristine state possible. I cringe at the thought of turning down a corner to mark a page, or scribbling notes in the margin. And as to your suggestion of underlining key topics, I have a retort at the ready. If you do so, you'll just focus on the underlined portions and you'll neglect to study and ultimately fail to master the remaining material.

Taking the time to think about this practice, reveals another reason I don't write in my books: I'm a coward. It's the same reason I prefer to draw in a hand sewn sketchbook over a finely finished one from the book store. That voice that says: you're going to mess this up can be awfully convincing.

Bottom line: don't mess with my books.

Yet, as of late, I'm finding myself rethinking my position on this topic.

This past week I picked up a book that was my Father-in-Law's (Z"L). As was his practice, it's filled with underlined, emphasized and annotated text. The result: I feel like I'm reading along with him. When I find a particularly elegant point in the book, and he's already marked it as such, I find myself nodding my head in agreement. It's been an unexpected joy.

I'm seriously considering doing the same thing with a number of my favorite books. SICP. The Dip. In a Sunburned Country. These books had a profound affect on my life, and I see a unique way of sharing these insights with others.

Of course, I'd have to buy fresh copies of these books to annotate. No way am I marking up my existing copies. What can I say, old habits die hard.

Incidentally, the book that inspired this post is an Easy Introduction to the slide rule by none other than Isaac Asimov. As I've blogged about before, I have a special fondness for slide rules, and this book is a terrific exploration into why and how they work.

Thursday, April 05, 2018

Itzhak Perlman on Easy and Hard

What happens when you're playing violin and a string snaps mid piece? If you're Kristine Balanas you handle the incident like it happens all the time:

If you're Stevie Ray Vaughan you don't even miss a beat:

But the ultimate story of playing with a snapped violin string involves Itzhak Perlman. The story is almost certainly false. However, researching this story will take you to this Sesame Street clip:

Man, that clip is powerful. It speaks volumes on ability, disability and the relative nature of these terms. It also hints at the flaw of labeling individuals strictly one or the other. Ultimately, it's a simple message we can't be exposed to enough.

Wednesday, April 04, 2018

Why The Haggadah Tells The Story of the Exodus The Way It Does

For as long as I can remember, I've been baffled by the way the Hagadah chooses to recount the story of Passover. We read through the Four Questions, get to the section marked The Answer and ultimately read a set of cryptic verses that kind-of-sort-of tell the story of leaving Egypt.

Sure, the imagery is powerful (Not through an angel and not through a seraph and not through a messenger, but [directly by] the Holy One, blessed be He!) and the themes of freedom and miracles are clearly on display. But why retell the story this way?

What about all the juicy bits of the story that aren't included? Like baby Moses being floated down the river, or the burning bush, or the various encounters with Moses and Pharaoh. This is grade A material, why doesn't the Haggadah include it?

This year, we finally connected all the dots at our seder, and it turns out the reasoning is actually quite simple. Heck, you're probably shaking your head right now at my lack of knowledge. But for anyone else who's been through the seder dozens of times and is curious why the story is told the way it is, read on.

Exhibit A: Mishnah Pesachim. Mishnah Pesachim opens with a discussion about Chametz and quickly gets quite technical. The last chapter, chapter 10, contains a delightfully readable description of how our sages celebrated seder night. It's obvious that much of our modern Haggadah was informed by this Mishnah, and it does show a remarkable degree of continuity between our seder and those from nearly 2000 years ago.

Consider the 4th paragraph of chapter 10:

They pour a second cup [of wine] for him. And here the son questions his father. And if the son has insufficient understanding [to question], his father teaches him [to ask]: Why is this night different from all [other] nights? On all [other] nights, we eat leavened and unleavened bread, [but] on this night, [we eat] only unleavened bread. On all [other] nights, we eat all kinds of vegetables, [but] on this night, [we eat only] bitter herbs. On all [other] nights, we eat meat roasted, stewed or boiled, [but] on this night, [we eat] only roasted [meat]. On all [other] nights, we dip [vegetables] once, [but] on this night, we dip [vegetables] twice. And according to the son's intelligence, his father instructs him. He begins [answering the questions] with [the account of Israel’s] shame and concludes with [Israel’s] glory, and expounds from “My father was a wandering Aramean” until he completes the whole passage.

Again, this is almost an exact match to what we did last Friday night. We poured the second glass of wine, read the four questions and then we got into the story. In the Mishnah, we're told to expounded from "My father was a wandering Aramean"... which means, what?

The answer to this question is found in Deuteronomy, chapter 26, verse 4 which reads:

The priest shall take the basket from your hand and set it down in front of the altar of the LORD your God.

You shall then recite as follows before the LORD your God: “My father was a fugitive Aramean. He went down to Egypt with meager numbers and sojourned there; but there he became a great and very populous nation.

The Egyptians dealt harshly with us and oppressed us; they imposed heavy labor upon us.

We cried to the LORD, the God of our fathers, and the LORD heard our plea and saw our plight, our misery, and our oppression.

The LORD freed us from Egypt by a mighty hand, by an outstretched arm and awesome power, and by signs and portents.

He brought us to this place and gave us this land, a land flowing with milk and honey.

Wherefore I now bring the first fruits of the soil which You, O LORD, have given me.” You shall leave it before the LORD your God and bow low before the LORD your God.

Deuteronomy, chapter 26, describes the first fruits ceremony, which includes a declaration. The declaration is a pithy explanation as to how the farmer ended up with his bounty. It's also the exact text we read on seder night!

And now I have my answer.

The seder ceremony more or less follows Mishnah Pesachim, Chapter 10. Which says that the way to tell the story on Passover night is to take Deuteronomy 26 and expound on it. Which is exactly what we do, picking each verse apart and enhancing it.

The story in the Haggadah may not recount the story of the exodus as I might have guessed, but it's most certainly not random. In just a few verses, Deuteronomy 26 summarizes the entire experience of leaving Egypt.

Case closed.

Monday, April 02, 2018

A Recipe for Making a Different Night Even More Different

My Brother and Sister-in-Law hosted not one, but two, terrific seders this year. And generously, they let me hijack one of the steps to let me share a new insight I learned this year.

The third step in seder is Karpas, which we've always translated as 'green vegetable' and Google translates as celery. At this step in the proceedings we've always dipped parsley into salt water. The parsley represents Spring and rebirth while the salt water represents the tears of the Israelite slaves. We usually note that this step is a sort of an appetizer, though one you're not likely to order at a restaurant. (Mmmmm...tears...yum....)

This tradition was all well and good, until I watched this YouTube video which suggested that there's room for variation at this step. Apparently, the Babylonian Talmud sets out three requirements for this step of the seder:

  1. The item being dipped has to have the blessing borei pri ha’adama
  2. You can't use this same item again for maror (the bitter herb)
  3. You have to dip the item into *something*

The video suggested that within those bounds, there was quite a selection of options available to you. You could dip parsley in salad dressing, radish in guacamole or, get this, bananas in chocolate! That's right, bananas are considered ha'adma not ha'etz as one would expect.

So this year, along with parsley we had carrots, radishes, mint, yellow peppers and bananas. And along with salt water, we had lemon juice, honey, Sriracha, whipped cream and yes, chocolate, to dip in.

But the goal wasn't just to add new flavors, but to also experiment with symbolism. The green of the mint, dipped in the fiery red Sriracha is another way of experiencing the joy of renewal and the harsh lives of the Israelites, with the red of the Sriracha adding a nod to the blood on the doorposts that kept the angel of death away.

And sure, sitting with a pillow does add to the feeling that tonight you're a free person. But try dipping banana in Chocolate, and tell me you don't feel even more free!

Doing some follow-up research I've learned that while we may have been stretching the tradition a bit, we weren't totally out in left field. Some Jews used to explicitly dip into something red, though that brought with it its own challenges:

The common Ashkenazic practice is to dip the Karpas into salt water. However, if the origin of the Karpas is indeed in Joseph’s ketonet passim, one would expect to find it dipped into blood during the Seder. But blood is strictly prohibited as food in Judaism[xiv]; the consumption of it is a capital offense punished by karet; therefore, we should expect the Karpas to be dipped into a substitute for blood. In the Bible and subsequent literature, there are numerous references to blood representing wine and wine representing blood[xv]. The most preferred wine in ancient times was red wine[xvi] which indeed resembles blood.

In many countries, Jews used red wine during the Seder. However, after the widespread occurrences of the blood libel in Europe, whereby Jews were accused of killing Christian children and using their blood during the Seder, Jews deemed it prudent to substitute white wine during the Seder[xvii] for the formerly preferred red wine, thus preventing even the appearance of Christian blood on the table. Hence one was more likely to find white wine at the Seder table than red wine[xviii]. We are therefore more likely to find traces of the tradition of the Karpas being dipped into red liquids in non-Christian countries.[xix]

And Maimonides apparently preferred to dip Karpas into Charoset, which would also be a tasty tradition to try.

In the great tradition of my forefathers, I didn't properly prepare for Passover night and found myself a few hours before seder with no obvious way to serve dipping chocolate. So I looked around the kitchen and quickly crafted a tea-light powered fondue pot:

I took a tuna can and used a churchkey to puncture the sides and provide airflow. I dropped a tea light inside, lit it, and put a small metal bowl on top. In the bowl, I added 1/2 cup of chocolate chips and 1 teaspoon of vegetable oil.

I lit the candle at the start of the seder and by the time we hit Karpas, the chocolate was perfectly melted. A miracle perhaps? OK, let's not go that far.

One of the primary reasons for the Karpas step is to elicit questions. And let me tell you, the above experiment did just that!

Thursday, March 29, 2018

Tiger Hu Fitness Band - Low Cost, Few Features and a Winner

I stumbled on the Tiger Hu Fitness Tracker Smartband on Amazon, and despite the fact that I have multiple smart watches, I couldn't resist picking one up.

My Zen Watch 3 may bring the functionality, but it's battery life leaves a lot to be desired. I could carry the clunky charger around with me, but that seems downright excessive. The Martian Notifier wins in the battery department, but I didn't find it quite functional enough to pull me away from the Zen Watch. And besides, it too requires a proprietary charger, which I'd rather not bring along.

All these battery annoyances are especially pronounced when I travel.

What I noticed first in the Tiger Hu is that it appeared to solve the battery problem altogether. This, combined with the low price of $29.99 made it a buy I couldn't pass up.

I've now had the Tiger Hu for about two weeks and here are my thoughts on it.

What It Does Well

The device is downright primitive when compared to my Zen Watch, so naturally the battery life is great. But more than that, it totally nails the charging solution. It trounces the Pebble, two Garmins and devices mentioned above, all of which require fidgety device-specific chargers. To charge the Tiger Hu, you peel off one section of the band to expose a surface that plugs in any USB charger. It's brilliant. Here this functionality is in action:

This makes traveling with the Tiger Hu a no brainer.

Given that the device is only $30, I have to say that the fit and finish is surprisingly good. It's far less clunky than my Zen Watch with a noticeable weight difference. Of course, comparing the Tiger Hu and the Zen Watch is silly; it's like comparing a pocket calculator with a laptop. But, if all you need to do is arithmetic, that pocket calculator is nothing to scoff at.

The accelerometer on the device is unexpectedly accurate. On the two occasions I used it to track a jump rope sessions, it perfectly matched the number I counted in my head. On a 4 mile run, the device was off by 400 steps when compared to my phone, which I think is acceptable. The watch also has a heart rate monitor, though I'm not convinced it's especially accurate. When compared to Shira's Garmin, it was typically 10bpm or more off.

The notifications that the watch offers, including calls, SMS, and Skype work well enough. As does the find-your-phone feature. So while the device doesn't do a whole lot, it does mean that I can keep my phone tucked into my bag and not miss a call or text message. Unfortunately, I'll have more to say about notifications below.

Finally, the watch does work well as a time piece. It syncs up with my phone and means that I've got the time and date on my wrist. That may not seem like much of an accomplishment, but long after my Zen Watch has died due to lack of battery life, the Tiger Hu keeps ticking.

What It Doesn't Do Well

The software that comes with the app is OK, though I'm sure it can't compare to a FitBit or Garmin in terms of features. I want to use the watch for basic time keeping and notifications, so I wasn't disappointed by this. But if you wanted to actually use this as a fitness tool, I wouldn't be surprised if you were disappointed. (On the other hand, if you have a teen who's dying to have a fitness band like all her friends, this may solve the problem quite nicely at a steep discount.)

The biggest disappointment is the way the device handles notifications. The app author decided to hard code the list of apps that can generate notifications, and nothing Tasker related made the list. If I could have enabled AutoNotification to send messages to the watch, then the device would have been quite hackable out of the box. As a quick work around, if I do want to get data from my phone to the watch, I can use Tasker to create and send me an SMS.

In general, the watch isn't obviously hackable. Though, I'm not ready to give up on this yet, as I have a couple of low level approaches I still intend to experiment with.

In Conclusion

For $30, I'm now the proud owner of a long lasting, easily chargeable, notification capable watch. Sure, it's mostly just a glorified watch and pedometer, but in many cases, that's just what I need. If that's what you're looking for, you can't go wrong with the Tiger Hu.

Tuesday, March 27, 2018

Hidden in plain sight: Using Unicode Braille Patterns for message obfuscation

Like the author at, as soon as I found out that Unicode has support for generating Braille Patterns I knew I'd have to put this capability to use. I took a slightly more practical approach than designing a font using braille (which I'll agree with the author, is delightfully perverse) and instead opted to use Braille as a sort of easy to read 'secret' code.

The use case is this: suppose you want to text your wife to pick up some cream for that nasty rash that recently flared up. You want to text her, and make sure she sees the message loud and clear. Yet, you'd like her nosy co-workers to remain in the dark about your condition. So you both agree to: (a) learn the braille alphabet, and (b) use a new convention in your text messages.

The convention I've implemented is this: any words between two sets of dots are automatically converted to Braille encoded letters. This allows you to compose a text message like so:

With the appropriate Tasker code in place, the following alert is shown when the message comes in:

The Tasker code consists of a trivial set of actions to detect encoded text:

The more interesting part is the JavaScript that converts from plain text to Braille Patterns:

function tToB(text) {

  function toHex(v) {
    var x = v.toString(16);
    return x.length == 1 ? "0" + x : x; 

  var bmap = {
    a: [1], b: [1,2], c: [1,4], d: [1,4,5], e: [1,5], 
    f: [1,2,4], g: [1,2,4,5], h: [1,2,5], i: [2,4],
    j: [2,4,5 ], k: [1,3], l: [1,2,3], m: [1,3,4],
    n: [1,3,4,5], o: [1,3,5], p: [1,2,3,4],
    q: [1,2,3,4,5], r: [1,2,3,5], s: [2,3,4],
    t: [2,3,4,5 ], u: [1,3,6], v: [1,2,3,6], x: [1,3,4,6],
    y: [1,3,4,5,6], z: [1,3,5,6], w: [2,4,5,6]

  var html = "";
  var text = text.toLowerCase();

  for(var i = 0; i < text.length; i++) {
    var c = text[i];
    if(c == ' ') {
      html += "&nbsp;&nbsp;&nbsp;"; 
    } else if(bmap[c]) {
      var val = 0;
      for(var j = 0; j < bmap[c].length; j++) {
        val += (1 << (bmap[c][j]-1));
      html += "&#x28" + toHex(val) + ";"; 
    } else {
      html += "_";

  return html;

var matches = text.match(/[.][.](.*?)[.][.]/g);
var html = text;
if(matches) {
  for(var i = 0; i < matches.length; i++) {
    html = html.replace(matches[i], tToB(matches[i].replace(/[.]/g, ''))); 

The Unicode standard for Braille Patterns is actually quite clever. The dots in a Braille pattern have a standard numeric index. E, for example, has dots 1 and 5 raised. In Unicode, these indexes correspond to bit positions. In the case of E, the bits enabled would be 10001000. This means that you can use Braille Patterns to represent any 8 bit piece of data, from a letter, to an arbitrary byte in a binary file.

Thanks again to for the inspiration!

Friday, March 23, 2018

An Incomplete, Yet Super Handy Tree Identification Guide

Perusing A Beginner's Guide to Recognizing Trees of the Northeast by Mark Mikolas is like taking a walk through woods with a clever naturalist. Rather than approach the identification of trees with scientific completeness, she seems to know which tree is which through one trick after another. This one over here, she explains, is a obviously a beech tree because it has gray-silver bark and while it's the dead of winter, it still has its leaves.

Mikolas' book has a simple recipe format. Name the tree, list useful cues for identifying the tree, and then spend a few paragraphs expanding on each cue. There are also photographs that visually depict the cue, which of course is quite helpful. The book is relatively brief, covering about 45 trees or so. However, what it lacks in depth it makes up for in functionality.

One of my little pleasures is identifying plants and other objects I come across while in the wilderness. To know something's name is to appreciate it on a deeper level than just the broad category of plant or tree. So for me, Mikolas' book is a win. It's not just that my chances of identifying trees is increased. By keeping the books cues in mind, I find myself noticing details about trees I'd never considered before. Which direction do the branches grow? What kind of shape or texture is the bark? Does the tree have its leaves in the winter? Even if the list of trees I can identify doesn't greatly increase, I'm thankful to Mikolas to opening my eyes to new features I'd never considered.

As I was reading 'Recognizing Trees' I so wished I had a way of committing the trees and their features to memory. Alas, I'm not especially gifted in that department. What I could do, however, was to quickly type up all the trees and their cues into a Google Spreadsheet. Check them out here:

I then printed this sheet using the multiple-pages-on-one-sheet setting enabled. The result: a mouse-print, wallet sized version of the guide:

My plan is to carry this cheat sheet with me in my wallet and put it to use on our next hike.

You're welcome to use these cues too, though without Mikolas' explanations, I doubt they'll mean a whole lot to you.

There's a time and place for a Peterson Guide to Eastern Trees, but if you want a fun and non-overwhelming approach to tree identification, 'Recognizing Trees' is the way to go.

Thursday, March 22, 2018

Scenes from a Flight

Here's some anti-flying-anxiety photography from our last trip to Boston.

The first set of pictures were taken on our night flight heading to Boston. The long exposure shots worked surprisingly well given they were snapped on my cell phone without any planning.

The last photo shows an aerial view of DC from the opposite end of the National Mall. You can clearly see RFK stadium, as well as the major diagonal streets that make driving in the district a needlessly confusing experience.

Tuesday, March 20, 2018

On a Roll: Cheap, Compact and Versatile Cordage

From in-field repairs, to basic camp chores, whenever you head into the backcountry there's no shortage of uses for rope. There are countless varieties of cordage out there, and finding the right balance of strength, cost and bulk can be tricky. One of my favorite options is a spool of 100LB test fishing line that I picked up years ago. It's strong enough to be used most for camp activities, like staking out a tarp or lashing items together. But its utility doesn't stop there: because of the narrow diameter (6mm or so) and lack of stretch, I've used it as sewing thread and even as an improvised cutting tool. Heck, I bet you could even use it for fishing. Of course, the lack of bulk means that it's quite packable and easy to stash in whatever kit I'm carrying.

I've often wondered what the ideal way to carry this type of cordage was, and being inspired by the sewing I've been doing, I decided to try spooling it onto a bobbin. This isn't really a stretch: it's more or less exactly what the sewing machine was designed to do. The spool of fishing line was too large to fit where the thread usually rests; but I found that a baby's stacking toy we had lying around made the perfect resting place for the fishing line.

Once I had things situated, it took only a minute to fill up two bobbins worth of cordage.

By my estimate, each bobbin holds about 18 feet of cordage. Not bad for the size of the finished product. Also I confirmed that I can pull the line off without forming knots.

I can see picking up a half dozen more bobbins, filling them up, and sprinkling these little spools of cordage all over. I think this method works quite well.


Related Posts with Thumbnails