Captured after a run through the DC Mall.
Let's say you've got a whole heap of paracord but aren't quite sure what to do with it. Well, I've got your answer: 101 Paracord Projects. From doggy collars to nunchakus, this list has you covered. The above photo is from #16, Paracord Army Men.
If that list doesn't do it for you, you could always make your way to Pinterest.
Happy Para'cording!
I'm not really a body modification guy. I cringe at the thought of getting my ears, or any other body part pierced. And tattoos are a no-no, as well. But here's a fascinating read of someone who took body modification in a (for me) unexpected direction: Body Hacking: My Magnetic Implant.
The best part of having the magnet implant was discovering invisible magnetic fields when I wasn’t actually looking. The first experience I had with this was walking through the intersection of Broadway and Bleecker in Manhattan. I passed through this intersection a few times before realizing that my finger would tingle at a certain spot. After paying a bit more attention, I realized that I was feeling something underground. At first, I assumed it was a subway car, but later came to the conclusion that it was most likely the subway power generator, or the giant fan that was cooling these generators. After noticing these underground waves at Broadway and Bleecker, I began feeling them all over Manhattan.
When I first saw the title of that article I assumed it was someone with a prosthetic limb who was clever enough to have a magnet included in the prosthesis. Turns out, I was way overthinking things. Nope, in this case Dann Berg simply had a magnet embedded in his body. The procedure, as he describes it, isn't particularly invasive, and I was back to thinking of ear piercings and such. If you can modify your body to be more attractive, why not modify it to be more functional?
For now, I'll stick to just being plain 'ol Ben (versus Bionic Ben). But good for Dann and others who are experimenting in experiencing the world in a new way.
Back when I was commuting, I was pretty rigorous about the books I'd listen to. I had an explicit cycle: Non-Fiction, Fiction, Self-Help / How-To and repeat. That kept me listening to a wide variety of content. Alas, these days I'm not as picky. I knew it had been a while since I've listen to any Self-Help / How-To, and so I went on the search for just such a title. I ended up selecting Spy the Lie: Former CIA Officers Teach You How to Detect Deception, and it was an excellent choice.
The technique behind Spy the Lie takes a few minutes to understand and a lifetime to perfect. The key principle is this:
When asked the right questions, people who are lying have no choice but to show symptoms.
In this case, the right kind of question is one that a truthful person can answer with ease, but a deceptive person needs to work at. A symptom can range from changes in body language, to commonly used retorts (such as getting angry with the question, or answering with an unusual degree of specificity).
Sounds pretty unremarkable, right? Once you've been through the book and seen the specific examples of the technique in use, I'm confident you'll change your mind. It's amazing to see just how effective asking the right questions can be.
Forget everything you've learned from the cop shows on TV. And no, you're not going to be able to read microexpressions. No, if you want to know if someone is lying, this is your method. It'll take tons of practice, but I've got no doubt it works. Trust me, I'm telling the truth.
A few weeks back, after much nagging, I upgraded my Windows 8 laptop to Windows 10. The results so far have been pretty underwhelming. For the most part, not much has changed. The most noticeable difference is that logging in has turned into an infuriatingly slow process. Just selecting and typing in my password seems to take an exorbitant amount of time. From there, it seems to take additional time just to get to a desktop where I can start opening windows and getting to work. It's probably just a few seconds here or there being added, but it's definitely painful. Oh, and I find that Firefox has been doing the Unresponsive thing more often. Of course this is all anecdotal, and who knows, maybe Windows 10 is doing some awesome stuff behind the scenes.
Anyway, there is one bright spot in Windows 10. It seems that they've taken the keyboard shortcuts started in Windows 8 and dressed them up a bit more. It's not Ratpoison, but it's an improvement.
The change I tripped over was that now Windows-Left and Windows-Right allow for stacking of Windows, not just side-by-side placement. I use two stacked monitors, so I'm not sure how urgently I need this, but it's good to see improvements being made in keyboard shortcuts. After reading up on this new Left/Right change, I learned that Windows 10 has a number of new key shortcuts worth learning. Including:
Finally, here's a cheat sheet to all of Windows 10 keyboard short cuts, courtesy of LifeHacker:
The humble Swiss Army Knife: jack of all trades, master of none. It may not be the perfect tool for all jobs, but its compact size and versatile set of functions more than make up for any limitations it has. And so it is with the newest edition to my camera repertoire: the Mobius ActionCam. For size comparison, here's the Mobius next to a Swiss Army Knife:
I know what you're thinking: it looks like one of those horrendously awful key-chain cameras. But, before you write off the Mobius, give it a chance. Yes, the Mobius comes out of the Spy Camera tradition. Previous versions of the Mobius were actually shaped like car remotes and were intended to be carried on a key chain. The current version has dropped the stealth goofy look and now has a more boxy case. It's also transitioned from being sold as a Spy Cam to being sold as an Action Cam. I suppose this was a smart marketing move: a Spy Cam is for 11 year old boys, while an Action Cam is for X Games striving 13 year old boys.
Marketing aside, the Mobius remains a feature packed lightweight camera. It shoots stills and videos. It shoots time lapses and has built in motion detection. You can tweak the color balance, exposure, and enable Auto Exposure or Auto Focus Lock. You can use the camera as a Web Cam, Thumb Drive or Slide Show Player for your TV. The camera is lightweight enough to be mounted on your drone model helicopter and is a favorite among the RC hobby folks. Heck, you can rubber band it to a binder clip and attach it to a hat. How do I know this works? Because I did just this:
The Mobius generates standard files which can be easily post processed. For example, you can create a hyperlapse using the recipe found here:
ffmpeg -r 20 -pattern_type glob -i 'IMG*.JPG' \ -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -c:v libx264 output.mp4
The Mobius is small enough to conceal, so you can use it as a portable game camera. The recipe would be simple: drop the camera into a Tupperware container, cover said container in Camo Duct Tape and leave somewhere on the trail. Return hours or days later to see what you captured.
Want to experiment with shooting 3D? Pick up a couple of Mobius Cameras and mount them side-by-side. Heck, you can even use the camera to capture macro shots. The camera works well as a dashcam because it can be configured to automatically turn on and off when it receives power from its USB cable. If you've got an idea for a new experimental camera or method of taking pictures, I'd hazard a guess that the Mobius is a solid platform to build it on.
The camera is hacker friendly in its configuration, allowing for exporting and importing of settings via a text file. There's both Windows and Android apps to simplify the configuration process if you prefer select boxes and radio buttons over editing plain text. There's even a very readable instruction manual, something most digital devices lack these days.
Like a Swiss Army Knife, it's possible to go totally astray with this tiny contraption. The camera gives feedback via a series of colored LEDs, but as I found out while preparing this post, it's possible to shoot photos and get nothing but unusable images (in my case, I had the exposure, color, contrast and sharpness set to -128 by accident, when these should have been at 0). The good news is, unlike a Swiss Army Knife, you shouldn't end up losing a finger or severing an artery. Still, plan to do plenty of practice and double checking of your configuration to make sure you you're capturing what you think you're capturing.
I'm not exactly sure how I'm going to put my Mobius to work next. But it's just too compact and handy to not have in the toolkit.
Don't you wish that more media attention went to people making a positive difference and not just those who are super rich, super athletic or super scandalous? In this spirit, I take a moment to kvell about a friend who received some much deserved coverage. Back on 12/15/2015, the New York Times offered up a list of New Yorkers that readers could vote for as New Yorker of the Year. And who should be listed on it? But our friend Ann Kansfield, who I grew up with and went to school with in Rochester.
Ann was being nominated because she's the first Lesbian Chaplin of the New York Fire Department. But her work goes beyond that: she's one of those people who work tirelessly for the benefit of others. As a Christian Minister she's pretty much the furthest thing from a Jew, and yet, she makes Tikkun Olam, repairing of the world, her life's work.
And so to see her get a mention by the New York Times is just too cool and too appropriate.
And if that weren't enough, she went ahead and won!
The moment you’ve all been waiting for: the winner of our “New Yorker of the Year” contest.
As chosen by reader submissions, the Rev. Ann Kansfield, the Fire Department’s first female (and first lesbian) chaplain, won by a landslide.
Ms. Kansfield, who also ministers at the Greenpoint Reformed Church in Brooklyn, received 81 votes, many of them submitted by members of her congregation.
We nominated her for breaking barriers and for helping some of the city’s bravest workers.
Her supporters wrote in with more reasons: her generosity of spirit, her support of her community, and her growing ministry.
You may not agree with Ann on her views of politics and religion. But I'd be willing to guess that you would agree that it sure is nice to see people who make doing good their life's work, get the press, even if it's just this once.
Here's Ann, Myself and others in the yearbook as Trapezoid Editors. Who knew I was standing with a future New Yorker of the Year?
Over the weekend we hung out with our friends Erin and Ryan (as well as their adorable kids) and played a heated game of Taboo. In Taboo you've got to get your partner to say a word without using specific words on the card.
The word for me was Whistle. Our conversation goes like this:
Me: It's on my key-chain
Shira: Flashlight
Me: No, the other thing
Shira: Knife
Me: No, the other thing
Shira: Flashlight
Me: No, the other thing
Shira: Compass
Me: It makes noise.
Shira: Whistle!
Me: yes!
And the next card, I kid you not, was Compass. I think I left Erin and Ryan pretty baffled with the size of my key chain.
As you can see, the outcome of the game was almost exactly an even split between the couples:
Good times!
After going for what seems like years without seeing a movie in a proper movie theater, we've now seen three nearly in a row. First there was Star Wars. Then The Big Short and then last night Spotlight. I don't feel all that bad as both the Big Short and Spotlight were based on real events, and their educational value is at least as important as their entertainment value.
At some point, I may be inspired to write something about Spotlight, but for this post, I'm going to focus my energy on The Big Short.
The Big Short was about the housing/banking crisis of the mid-2000's and is masterfully done. How you make a movie on banking watchable, much less entertaining, takes real skill. It's another win for Michael Lewis, and count me in for his next movie (whatever that is). And the timing of the movie is great: just long enough after the crisis that we've basically put it behind us, but not so long after that it's Just History.
OK, enough praise. You get the point, it was a fine movie. Here's two thoughts that have stuck with me since watching the movie:
First, we're supposed to walk out of the movie theater angry at bankers. I get that. But I walked out with a fresh anger towards a new group of people: the raters. See, as far as I can tell, people, bankers included, are always going to game the system. There will always be those who will try to make big sums of money off of risky propositions. And in may respects, that's OK.
Every time you walk into a casino, you're signing up for just this arrangement. Sure, you may walk out with big bucks, but statistics say, if you play long enough, you'll lose. So if banker's want to go with risky bets, there's a time and place for that. What I'm dumbfounded by is that the people who rated the loans and other instruments (look at me, one movie and I'm an expert!), could rate them seemingly however they wish.
Just saying something is a good bet, doesn't make it a good bet. Risky bets are OK. Safe bets are OK. Making what you think to be a safe bet, when it's really risky, is not OK. And that, from my 130 minutes of movie education, seems like one of core problems in the crisis.
How could giving such ridiculous ratings not be illegal? How could the people who rated these things be in business? Heck, how could being a rater even *be* a business in the first place? It's like playing football and having the coaches be the refs. Shouldn't the referee be completely outside the game? (Whoo, sports metaphor! Nailed it.)
The big question: can I take my outrage and use it to go the next step to figure out how this works in the non-movie universe? Oy, probably not. Though I did just mail my Senator on the topic, so let's see what he has to say.
My second take away from the movie is a sort of wish. In the movie, genius Dr. Michael Burry, does the unthinkable: he slogs through hundreds and hundreds of loans to come up with the notion that what's being rated as a good bet, is in fact, anything but. When he tells another character in the movie that he's done this, they act as though he's performed the unthinkable. Sort of like actually reading the terms and conditions *before* signing up for Facebook, or some other fine-print feat.
My wish is this: that kids watching this movie will want to turn to their parents (or, hopefully date) and ask the obvious question: why didn't he write a program to do this? In the movie, Burry is seen noting how many days overdue various loans are, compiling them into a spreadsheet. While I'm sure in actuality there was a lot more going on, this sort of thing is exactly why we have computers.
In my world, we're only one program away from finding and hopefully addressing the next crisis, whatever that may be.
I'm a big fan of always carrying a compass and for years I've had one on my key chain. An old school compass is truly an object of beauty: it has no reliance on cell towers, WiFi, GPS or batteries. It Just Works. Well, that's the theory anyway. In practice, my every-day carry of a compass ends up beating up a delicate instrument which was never really intended to be subjected such harsh conditions. Consider my search for the perfect pocket compass:
1. is a cheap keychain button compass. I picked up a package of 20 of them from eBay for some ridiculous price. The idea was to pick up a whole slew of them and find one in the bunch that seemed to be accurate. The problem with these little button compasses is that they are slow to settle on North. I found that I was constantly tapping the compass, willing it to show me the right direction. What do you want for a few bucks, right?
2. is was the very promising Metro Silva Compass. This guy actually held up for almost two years. Unlike the cheap button compasses, this needle would always confidently snap to North. But look at the picture above - somehow I managed to reverse the polarity of the compass (trust me, North is up). That's not cool. I've got a note into Silva asking what I should do about this glitch. Let's see what they say.
3. is the very slick County Comm SERE compass. Like the Metro Silva, it snapped to North much faster than the button compasses. It comes with a lanyard, but I couldn't resist just sticking it on my keychain. I figured I'd take it off the keychain to do any actual readings. I know this isn't a keychain compass, but I figured if it was tough enough to be included in a "Aircrew Survival Kit" it should be tough enough to live in my front pocket. I was wrong. After a few weeks I realized that the compass dial had effectively become magnetized. The result, and it's hard to see this from the photo, is that compass dial dips down and "sticks" to the base of the compass, rendering its readings useless. D'oh. I've got a note into the good people at County Comm to see what they have to say about this.
4. is my latest attempt. It's a Tac Compass, also by County Comm. This bad boy is tiny. But it does appear to meet my need of being a functional compass. For now, I'm storing the compass in one of the pill containers on my key chain:

Like I said, it's itty bitty! If it can turn out to be reliable, the Tac compass may be the perfect EDC compass. It's almost invisible until you need it, and then can pull it out and be ready to un-lost yourself.
The question, of course, is can this little guy stand up to the punishment of living on my key chain? Time will tell.
Update: Both Silva and County Comm both got back to me within 24 hours and promised to replace / fix the compass for no charge. In the case of Silva, I need to send it back to Sweden, so yeah, we'll see how that goes. But both Silva and County Comm demonstrated quality customer service, which is much appreciated.
We had some crazy Christmas weather in DC: 70°F and foggy. Like pea soup foggy. While our neighbor's little ones were no doubt tearing into presents, Shira and I took a surreal walk along the Potomac.
What's truly remarkable was just how fast conditions were changing. The two photos below are taken 2 minutes and 4 seconds apart, yet as you can tell, the visibility drops dramatically. In the first shot, you can partially make out the DC shoreline, in the next, you can't even see the river! That's not photo filter magic; that's actually what was going on.
And then there was National Airport. Gravely Point was as we'd never seen it before. Like the scene above, the fog shifted a number of times in front of us. One minute the airport was plainly visible, the next, it was gone. At one point we watched in awe as an approaching airplane simply disappeared into the fog. I can't imagine what it was like to be that pilot: you're staring at a clear runway and then poof! it's replaced by a wall of white.
And a few more bonus shots: seriously, I felt like we were walking through some exotic fantasy world.


[SPOILER ALERT - SPOILER ALERT - SPOILER ALERT - SPOILER ALERT - SPOILER ALERT]
Two nights ago I watched Star Wars: The Force Awakens, and after mulling it over, I'm ready to weigh in with my two cents.
The movie gets good almost immediately. It doesn't hurt that hearing the open music score brings me back to being 10 years old and sitting in my Aunt and Uncle's house watching Star Wars on Laser Disc. Nearly everything seems spot on: the characters are great, the banter is top notch and the clever references to the previous episodes are brilliant.
I'm loving the Rey character. When she says I know how to run without you holding my hand, she's not just being quippy, she's showing that the writers have been paying attention. We live in the age of the Self Rescuing Princess, and Rey embodies these principles.
And seeing Han and Chewy together? C'mon, who couldn't be moved by that?
I was even OK with the fact the story arc of the movie seemed a pretty near match to Episode IV, the very first Star Wars movie. After the flop of latest set of movies, who could blame the writers for sticking with what works? Besides, the movie was fun. Why shouldn't we get a modern take on classic scenes like the Star Wars Cantina. Heck, they even dressed Rey like the original Luke:

The visuals are amazing, too. To see the various ships interact with snow, sand and water, is really quite remarkable. The killing was also quite a bit more realistic; I don't recall nearly this much gore in the original set of movies. But I suppose that's just a sign of the times.
But—you had to know there was a but coming—at some point in the movie all this recreating of the original Star Wars movie lost its charm for me. The moment: when we get the big reveal of the final mission. What does our band of rebels have to accomplish? Well, destroy the Death Star. Oh wait, they don't call it a Death Star. They call it, and I'm not making this up, a Star Killer. You're telling me that a 200 *million* dollar budget gets you "Star Killer?" And it gets worse from there: what does our team of rebels need to? Well, only exactly what they did in the first Star Wars movie, down to the need to lower the shields and do a trench attack of the one flaw the Death Star Star Killer designer's seemed to have neglected to address (will these engineers never learn!). And with only one snarky comment from Han Solo, that's exactly how the movie proceeds.
At some point imitation stops being the sincerest form of flattery, and just becomes imitation. I mean, was it laziness that caused the writers to bother coming up with anything unique in some of the most climatic scenes in the movie? Or was just fear that they'd mess it up. Better to go with a tried and true plot line than risk a Jar Jar Binks scenario. I'm not sure, but you can tell, it really bothered me. It just made the movie feel a bit tedious at that point, like they were just going through the motions.
OK, so there's my big criticism. Otherwise the movie was rock solid. And for the younger audience who may have never seen the original Star Wars, the whole Star Killer critique won't even mean anything. It's a fun movie and shows that modern day Star Wars films can be created. The big question is this: can Episode 8 be more than just another clone?
I really enjoyed Malcolm Gladwell's David and Goliath: Underdogs, Misfits, and the Art of Battling Giants. To help crystallize the points I took away from the book, I've written up a terse list summarizing them. See his book for all the details.
Without further ado I give you: 6 Tools to Help Slay the Giant:
The first time I picked up Malcom Gladwell's David and Goliath: Underdogs, Misfits, and the Art of Battling Giants I promptly put it down. Why read a book that you know you're going to agree with? Consider that the very premise of my day job is that with your idea and my coding skills, we can conquer tech giants everywhere. Or that my blog has a whole section focused on feel-good underdog stories. Even activities like being a foster parent are done with an eye towards showing that one family can make a difference against the colossal problem of child neglect and abuse. So I hardly needed a book telling me that little could beat big; this I knew.
What an idiot I was.
I just finished listening to David and Goliath, and I'm glad to report that it's more than worth your time. Gladwell isn't just interested in recounting underdog stories. Though there is plenty of that, and as usual, he nails it. But he goes further: picking apart the tales to see what makes them tick. As is typical in Gladwell's work, he cleverly weaves together totally disparate threads, from a girl's basketball team to a French town that defies the Nazi's, to make his point.
As if that weren't enough, Gladwell seems to veer into territory that's essentially custom written for me. After a chapter that pretty much explains my college experience, he launches into a chapter on dyslexia, a learning disability I have first hand experience with. His discussion about how being a slow learner in some areas can, in the long run, help you be successful in others wasn't just an interesting theory; it was a description my academic career.
There's no doubt that if you find yourself in an underdog situation, you best get yourself Gladwell's book and start reading in a hurry. He definitely has key insights into what the David's of the world can do to come out on top.
I, however, have been thinking about the Goliath side of the equation of late. Bare with me, as the analogy sort of breaks down. Consider that as I was listening to Gladwell's book, we had both the Paris and San Bernardino attacks happen. In this situation, the US fits the profile of the seemingly invincible Goliath, and ISIS (or is it ISIL or Daesh?) fits the role of the underdog, David.
Goliath appears to hold the advantage: he's huge, well equipped and makes quite the show of force. David, for his part, is opportunistic, using a fighting style that Goliath simply never considered. We know how the story goes.
While I can appreciate why it's tempting to respond to these attacks with draconian polices or outrageous shows of force, I can also see how these can serve to benefit the bad guys. As Gladwell's book points out, it's these sort of tactics that have historically helped the underdog, not defeated it.
I won't claim to have the answers for how to deal with ISIS from a domestic terrorism perspective. But man, it sure would be nice to learn the lessons of history and not fall for into the traps other giants have. And Gladwell's book can absolutely help in this department.
I explained to my little buddy Nathan, that traditionally, we played dreidel with M&M's, like our ancestors surely did. But we didn't have any M&M's in the house, so he suggested we play with the Ninja vs. Pirate Army Men I had on hand.
And so we did!
He selected his army of pirates, I an army of ninjas (5 strong, each), his Dad and Sister joined in the fun, and the game began! Sadly, I was defeated in both games we played. That little pisher sure can spin!
Good times!



My Galaxy Note 5 has a built in step counter. However I find that every time I want to check it, I have to bring up the S Health App and dig around until I can find the screen I'm looking for. Further more, I'd love to be able to track steps for a given activity. Think electronic Ranger Beads. S Health will give me a pretty graph of my steps, but not the one number I want. I've tried looking for a lighter weight pedometer app, but every one I've found has been an ad infused disaster.
By now you know where I'm going with this: this is the perfect job for my Pebble. The Pebble classic lacks the step counter that the phone has, but provides the streamlined UI that I'm after. Here's what my Steps 'App' looks like on the Pebble Classic:
There's really not much to it. I select the Steps option on the home menu, and from there, I can see my Steps Since value, as well as the daily total and the previous 4 days. Steps Since is the arbitrary activity counter I mentioned. I can clear it from the watch anytime I want.
Behind the scenes the phone is tracking both the daily and steps since activity in text files. If I ever want to use this data for other purposes, I can.
The above is all written in Tasker and leverages AutoPebble. Most of this little app is pretty obvious, but I did have a few hurdles to get over.
First, it wasn't obvious to me how to gain access to the step counter. One would assume there's a magic Tasker variable, %STEPS you can query. That's not the case. Instead, you need to setup a profile which will be notified when N steps have been taken. Within this profile, I set that global variable I'm after. See:
Profile: Steps Taken Tracker (109)
Event: Steps Taken [ Number:10 ]
Enter: Anon (110)
A1: Variable Add [ Name:%STEPS_DAILY Value:10 Wrap Around:0 ]
A2: Variable Add [ Name:%STEPS_SINCE Value:10 Wrap Around:0 ]
I setup this profile to be notified every 10 steps, and as you can see, it updates both the daily and since global variables. I'm not sure what the impact of being notified of every step would be, but it just seems excessive.
To track steps on a daily basis I needed to save and clear out the %STEPS_DAILY value at midnight. That was also an easy profile to write:
Profile: Steps Daily Reset (116)
Time: 12:00AM
Enter: Anon (117)
A1: Write File [ File:Tasker/steps.txt Text:%DATE: %STEPS_DAILY Append:On Add Newline:On ]
A2: Variable Set [ Name:%STEPS_DAILY To:0 Do Maths:Off Append:Off ]
Clearing the %STEPS_SINCE is done on demand. In this case I save the start, end dates as well as the step count for the period being cleared. I also send a vibration request to the watch so I get a signal that value has been cleared:
Pebble Steps Clear Since (119)
A1: Write File [ File:Tasker/steps.since.txt Text:%STEPS_SINCE_STARTED %TIMES %STEPS_SINCE Append:On Add Newline:On ]
A2: Variable Set [ Name:%STEPS_SINCE_STARTED To:%TIMES Do Maths:Off Append:Off ]
A3: Variable Set [ Name:%STEPS_SINCE To:0 Do Maths:Off Append:Off ]
A4: AutoPebble App [ Configuration:Full Screen: false
Control App: Go Back
Check Pebble Connected: false
Other Pebble App: unknown
No Prefix if Command: false
Do Not Disturb: false
Vibration Pattern: 300
Clear History: false
Open Phone App: false
Save Scren: false
Don't Send Screen: false
Go Back: false
Go Back Multi: false Package:com.joaomgcd.autopebble Name:AutoPebble App Timeout (Seconds):20 ]
One final challenge was that I wanted to show the last 4 days worth of step activity on the watch, however, steps.txt contains all activity. To get around this, I wrote an action: Tail File which will grab the last N lines from the file and return them. As you can tell, it's written in JavaScript, which means that the coding is straightforward. However, it's note especially efficient. I find no other choice but to read in the entire file as a string, which will be painful once steps.txt gets huge. But I'll deal with it then. (One solution: setup a Profile to rotate the file every month, and then the file won't grow past 30 lines or so.)
Tail File (132)
A1: JavaScriptlet [ Code:var file = local("par1");
var max = local("par2");
var lines = readFile(file).split("\n");
if(lines[lines.length-1] == "") {
lines.pop();
}
max = Math.min(max, lines.length);
while(max != lines.length) {
lines.shift();
}
setLocal("lines", lines.join("\n")); Libraries: Auto Exit:On Timeout (Seconds):45 ]
A2: Return [ Value:%lines Stop:On ]
For completeness, here's the actions to show the steps menu and clear the steps since value. That should just about do it for this exercise:
Pebble Steps Menu (114)
A1: Variable Set [ Name:%newline To:
Do Maths:Off Append:Off ]
A2: Perform Task [ Name:Tail File Priority:%priority Parameter 1 (%par1):Tasker/steps.txt Parameter 2 (%par2):5 Return Value Variable:%labels Stop:Off ]
A3: Variable Split [ Name:%labels Splitter:%newline Delete Base:Off ]
A4: Array Process [ Variable:%labels Type:Reverse ]
A5: Array Push [ Name:%labels Position:1 Value:Today: %STEPS_DAILY Fill Spaces:Off ]
A6: Array Push [ Name:%labels Position:1 Value:Since: %STEPS_SINCE Fill Spaces:Off ]
A7: AutoPebble List [ Configuration:Full Screen: false
Header: Steps
Labels: %labels(:)
Long Click Actions: steps_clear_since
Last Line Height Default: false
Remember Position: false
No Prefix if Command: false
Do Not Disturb: false
Clear History: false
Open Phone App: false
Save Scren: false
Don't Send Screen: false
Go Back: false
Go Back Multi: false Package:com.joaomgcd.autopebble Name:AutoPebble List Timeout (Seconds):120 ]
Profile: AutoPebble, Steps Clear Since (118)
Event: AutoPebble [ Configuration:Command Filter: steps_clear_since
Case Insensitive: false
Exact: false
Case Insensitive: false ]
Enter: Pebble Steps Clear Since (119)
A1: Write File [ File:Tasker/steps.since.txt Text:%STEPS_SINCE_STARTED %TIMES %STEPS_SINCE Append:On Add Newline:On ]
A2: Variable Set [ Name:%STEPS_SINCE_STARTED To:%TIMES Do Maths:Off Append:Off ]
A3: Variable Set [ Name:%STEPS_SINCE To:0 Do Maths:Off Append:Off ]
A4: AutoPebble App [ Configuration:Full Screen: false
Control App: Go Back
Check Pebble Connected: false
Other Pebble App: unknown
No Prefix if Command: false
Do Not Disturb: false
Vibration Pattern: 300
Clear History: false
Open Phone App: false
Save Scren: false
Don't Send Screen: false
Go Back: false
Go Back Multi: false Package:com.joaomgcd.autopebble Name:AutoPebble App Timeout (Seconds):20 ]
Before I dive into another AutoPebble programming example, I suppose I should take a step back and explain why I think all this matters.
My Galaxy Note 5 has a great many advantages: amazing screen, gobs of RAM, brilliant camera, handy stylus and more. But compact and always accessible aren't traits on the top of this list. That's where the Pebble appears to come in. With just couple of quick presses on a device that's literally at hand, I can perform tasks on my phone. It's like I get the speed and convenience of an old school flip phone, but the computing power of a tablet. Add to this that AutoPebble allows for quick and easy integration between the phone and watch, and you can start to appreciate just why I'm so loving this setup.
On to the code. Good news, this is a far simpler example than my last hack. Still, I think it makes for a useful Smart Watch feature. Here's a Show Clipboard AutoPebble profile and action:
Profile: AutoPebble, Show Clipboard (86)
Restore: no
State: AutoPebble [ Configuration:Command Filter: show_clipboard ]
Enter: Anon (87)
A1: AutoPebble Text Screen [ Configuration:Full Screen: false
Title: Clipboard
Text: %CLIP
Vibration Pattern: 200]
The action consists of exactly one command: show a screen on the watch with the text %CLIP. %CLIP is a magic Tasker variable that will always equal the contents of the system clipboard.
But why do you care, right? So you can do this:
Step 1: highlight and copy some text on your phone:
Step 2: select the Clipboard option on the watch and pull in the contents of the clipboard:
Step 3: stroll through the store with confidence picking up the right ingredients with only the occasional glance to your watch.
Last night David and I took a random'ish walk through the US Capital area of DC and I was treated to not one, but three new (to me) and remarkable sites.
First up, the American Veterans Disabled for Life Memorial. Apparently, this is the only military memorial in DC that's independent of branch or conflict. This memorial strikes me as a tough one to get right: you don't want to glorify war, nor condemn it. You don't want to trivialize the challenges Veterans with disabilities face, nor turn them into inpsirational props. I think the monument struck this balance well, and most importantly, it gets the conversation started.
Lightening things up from there, we wandered over to the US Botanic Garden. It was past 5pm, so in theory, the garden should have been closed. But they're doing holiday events, so it was open. David and I got to wander through a nearly empty Botanic Garden, and take in the very cool holiday train display. Seriously, if you've got a Thomas obsessed little one, you definitely need to make your way to this exhibit. What the train room lacks in size it makes up for in interesting detail. Oh, and the whole thing is free. Definitely a winner activity.
As if moths drawn to the flame, after the garden we made our way towards the brightly lit US Capitol and its Christmas tree. As has become our tradition, David and I stood by the tree and lamented the fact that we celebrate the holiday season by killing a gorgeous 74 foot tree. The practice of which seems only slightly perverse. (I know, we're literally a bunch of tree huggers.) And from there we found ourselves outside the stately Russell Office Building. David was smart enough to find a visitor entrance, and after a quick security check, in we went.
The big deal behind the Russell Office Building is that it houses the offices of the US Senators. We wandered through the halls and passed office after office of well known Senator. I was such a tourist, peeking my head in wherever I could and snapping tons of photos. It was remarkable to consider that some of the most influential people in the country walk these halls on a daily basis, and we were just roaming the corridors like a bunch of kids cutting math class. The building has that old school ornate quality about it that makes every part of it look interesting (and causes you to repeatedly mutter: man, they sure don't make 'em like they used to). Definitely a fun experience.
For a small city, DC is truly packed with amazing treasures just waiting for you to practically trip over them.











I finished reading Danny Gregory's blog entry on Zork and was inspired to drop him a quick dude, well written! type comment when I ran into a fairly common snag. Whatever I wrote looked like it was from an automated bot engaging in comment spam. Anything I could think to write (Nice, Well Said!, Keep the great posts coming!) seemed so obviously canned that surely a real human wouldn't write such a thing.
This isn't a new problem. Back in the day, I used to answer live chat requests on my company website. Those chat sessions always made for interesting discussions (note to self: find and install a new live chat platform). One challenge that I'd run into is that some folks wanted me to prove that I wasn't a bot. No matter what information I provided to them, it only tended to support their hunch that they were talking to a machine. I don't have any of those transcripts handy, but here's how I recall them going:
Me: Howdy! How can I help you?
Visitor: are you a real person?
Me: Sure.
Visitor: prove it.
Me: Let's see. My name is Ben. It's currently cold outside.
I'm sitting here in sweatpants.
Visitor: are you really a person?
Me: Yes. Really. I promise.
...
Just reading the above transcript I barely believe I'm human.
I suppose this all falls into the category of First World Internet Problems. But I find it fascinating that in our race to make computers appear more like humans, we've actually made humans appear more like computers.
There's no doubt that the Turning Test is a tough problem to solve. But who would have thought this sort of reversed Turning Test would be, in some respects, just as tricky?
Was this post autogenerated? Would you know if it was? Would it matter?
I've always been fascinated with the challenge of being able to 'read' the current time without looking at a watch. Heck, why stop at the time, I'd love to be able to get all sorts of information from my devices without having to actually look at a physical device. I never did get a chance to buy this sweet braille watch from years ago, but now that I've got a hold of Shira's Pebble, I figured I could finally hack to together a solution.
Using AutoPebble, I'm able to send a vibration pattern to the watch which means that the Pebble can effectively talk Morse Code. At the core of my solution is this JavaScriptlet which maps text to a vibration pattern:
function textToCode(text) {
var code = "";
var letters = text.toUpperCase().split("");
var encoder = {
A: '.-', B: '-...', C: '-.-.',
D: '-..', E: '.', F: '..-.',
G: '--.', H: '....', I: '..',
J: '.---', K: '-.-', L: '.-..',
M: '--', N: '-.', O: '---',
P: '.--.', Q: '--.-', R: '.-.',
S: '...', T: '-', U: '..-',
V: '...-', W: '.--', X: '-..-',
Y: '-.--', Z: '--..'
};
// Ben's Own Numeric Mapping
encoder['1'] = encoder['A'];
encoder['2'] = encoder['T'];
encoder['3'] = encoder['H'];
encoder['4'] = encoder['F'];
encoder['5'] = encoder['V'];
encoder['6'] = encoder['X'];
encoder['7'] = encoder['S'];
encoder['8'] = encoder['E'];
encoder['9'] = encoder['N'];
encoder['0'] = encoder['Z'];
for(var i = 0; i < letters.length; i ++) {
var c = letters[i];
var e = encoder[c];
if(e) {
if(code != "") {
code += " ";
}
code += e;
}
}
return code;
}
function codeToPattern(code) {
var code = code.split('');
var dot = 250;
var pattern = [];
for(var i = 0; i < code.length; i++) {
var letter = code[i];
if(letter == ' ') {
continue;
} else if(letter == '.') {
pattern.push(dot);
} else if(letter == '-') {
pattern.push(dot * 3);
}
var peek = (i + 1) == code.length ? null : code[i+1];
if(peek == null) {
continue;
} else {
pattern.push(peek == ' ' ? dot*7 : dot);
}
}
return pattern.join(",");
}
var text = local("par1");
var code = textToCode(text);
var pattern = codeToPattern(code);
There are a couple of hacks above worth noting. First off, each letter is being treated as its own word. So: Hello World would actually be sent as H E L L O W O R L D. For someone who struggles to read even the most basic Morse Code, this simplification makes sense. Maybe one day I'll graduate to parsing words.
Second of all, you'll notice that I'm not using the proper Morse Code for numbers. Instead, I'm using a mapping I made up. It's sort of logical: A = 1, as it's the first letter in the alphabet, 2 = T, as in Two, 3 = H as in tHree, and so on. I did this for a few reasons: first, Morse Code is optimized for frequently letters. So using A = 1 means that I can send 1 as • —. Had I used the proper Morse Code for 1, I'd have to send • — — — —. Secondly, if I'm going to manage to learn anything through this exercises, I'd prefer it was 10 different letters, rather than the Morse Code numbers.
Regardless, the above does the heavy lifting of converting text into dots and dashes, and from there into a Pebble vibration pattern. I wrap up the above code as an action:
Parse Morse (88) A1: JavaScriptlet [ Code: .. code from above ... Libraries: Auto Exit:On Timeout (Seconds):45 ] A2: Return [ Value:%%par2 Stop:On ]
Note that Parse Morse is an example of me figuring out how to make Tasker Actions far more modular. Parse Morse takes in two arguments: the first is the text to parse, and the second is the value to return (either code or pattern).
I then setup the Pebble Morse Time action to listen for requests from AutoPebble, invoke Parse Morse and then present the encoded time on the watch. Here's the code for this action:
Pebble Morse Time (106) Abort Existing Task A1: Perform Task [ Name:Parse Morse Priority:%priority Parameter 1 (%par1):%TIME Parameter 2 (%par2):code Return Value Variable:%code Stop:Off ] A2: Perform Task [ Name:Parse Morse Priority:%priority Parameter 1 (%par1):%TIME Parameter 2 (%par2):pattern Return Value Variable:%pattern Stop:Off ] A3: Variable Set [ Name:%newline To: Do Maths:Off Append:Off ] A4: Variable Search Replace [ Variable:%code Search: Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In:%code Replace Matches:On Replace With:%newline ] A5: AutoPebble Text Screen [ Configuration:Full Screen: false Title: Time Text: %code Vibration Pattern: %pattern ]
The above action include string handling that turns spaces into newlines. I chose to do thiss via a Variable Search Replace action, though I'm beginning to appreciate that it may have been easier to just do this as a Javascriptlet. The multi-line approach me to render the Morse Code for the time in a large font, with one "letter" per line. Here's how it looks on the watch:
That's T Z Z Z O'Clock, or 20:00 or 8:00pm.
To polish off my no-eyes solution, I've setup two short-cuts. A long press opens up AutoPebble and another long press kicks off the Pebble Morse Time task.
It's a crude solution, but technically, it does work. I can manage to get the time buzzed to me all without ever looking at a physical device.
As for my ability to interpret Morse Code, I've still got a ways to go. For now, I'm both vibrating and showing the Morse Code of the time, and as you can tell above, the current time is included in the header of the watch itself. I find that most of the time I can properly interpret a digit or two from the vibration, and read most of the remaining digits by looking at dots and dashes.
All in all, it's a fun experiment and is just more proof at how cool AutoPebble is. It probably took longer to write up this blog post than did it to code up this solution. Good times.
I'm always psyched when I discover a new section of biking/walking trail in the area. Yesterday, Shira, Dawn and I did a section of Holmes Run that I was totally unfamiliar with. It seems as though Holmes Run is split into different, perhaps non-connecting sections, so perhaps that's why I I hadn't been on it. Or maybe it's just been completed withing the last couple of years. All I know is that we started at Cameron Station Park and went "right" after crossing the bridge.
It's an excellent section of trail and worth your time to explore. Dawn says it goes all the way to Old Town Alexandria.
The weather was absolutely amazing yesterday (the high was apparently 71°F!) and it was a perfect day to be outside. Here's a few snapshots or the foliage along the trail; I couldn't resist stopping and snapping a handful of photos:




Here's another trick a $10 Software Defined Radio dongle can do on Android. You plug in the dongle, and kick off ADSB Receiver, a free Android App. And in a few moments, you'll see something like this:

That's live flight data. But the thing, that's not being pulled off the web. That's being received directly from the airplanes themselves (at least, as I understand it). The whole thing is powered by ADS-B, a standard by which planes broadcast their location data.
I won't claim to understand the arrangement, but I'm still amazed that I can pick up this data using little more than a $10 dongle and smart phone. There's no encryption used in the system, which I find surprising (though like most older protocols, that's not really shocking).
Is this actually useful? Sort of. One of our favorite parks, Gravelley Point, is directly adjacent to National Airport. It's the perfect place to sit back and watch the miracle of flight, as planes take off and land just overhead. Hitting the park with this app open, and also using the radio to listen to Air Traffic Control would be pretty sweet.
I also like the idea of discovering an open protocol that's all around us, yet invisible to most.
Makes me wonder what other data I can pick up with my little receiver...