1. Sorting Out Charity & Compassion

    Those of you who know my beloved Shawna know that she has a big mouth. And a big temper. And if you know Shawna, then you probably also know that she has an even bigger heart. One of the biggest hearts on the planet.

    My personal relationship to charity and my role in solving the various problems in the world is confused and has always been confused. I give a small amount of money to a few charities. Not any amount that I really feel. I donate clothes to Goodwill and ARC because it’s convenient — they come and pick up things I don’t want anymore. These acts are so small, I’m almost embarrassed to count them as charity. What is someone like me going to do to solve seemingly intractable problems like homelessness? Like racism? Like poverty? I’ve always cowered in the face of the notion of “solving” those issues. Where does one even begin?

    Last weekend, Shawna and I were about to pull away from the Family Dollar store. It was day 5 of the frigid cold snap where temperatures were typically -9 degrees at night and barely 10 during the day. Shawna saw a homeless guy sitting against the wall in the alley. She said she wanted to stop and see if there was anything she could do to help him.

    Inside, I was thinking, “I’m tired. I want to go home. I have things to do at the house. I don’t know how to help homeless guys. What are we going to do, buy him food? That helps him today, but what about tomorrow? This is much bigger problem than helping this one guy can do anything about.”

    I said, “Okay.”

    She said, “Are you going to come?”

    I said, “I’m going to stay in the car, if that’s ok.”

    So Shawna went and introduced herself to the guy. They talked a bit and then he got up, and they both went back into the store together.

    Shawna bought him long underwear, some food and some milk, the things he said he could use. Fourteen dollars. (Fourteen dollars she can’t really afford, by the way.)

    When she got back into the car, she told me a little of his story. No family, from Pennsylvania, not staying in Denver, but just trying to get through the next few days. Slept out all of the last several frigid nights.

    Then she was mad at me for seemingly not caring.

    I was actually deeply touched. Brought to tears in fact. But because I’m a man, I couldn’t express it to her in the same moment that she was yelling at me. Men aren’t built for that.

    I do care. I’ve just never known how to not shy away from those problems. And sometimes it takes your broke-ass, phenomenal, huge-hearted girlfriend to teach you how to be kind and compassionate, even if just one kind act at a time.


  2. Bash script to get a date relative to another date

    Hello there.

    It took me a little too much googling to find this bash script solution, so I put it here for posterity.

    I wanted to count backwards 30 days to get the start date for a range of dates, given the end date. I was quite familiar with the construction

    date --date="30 days ago"

    but it wasn’t clear how to get “30 days ago from $end_date”.

    Here’s the very simple but not well-documented solution:

    start_date=$(date --date="$end_date - 30 days")

    Format of end_date doesn’t seem to matter much as long as the date command can parse it:

    # date --date="Tue May  7 16:40:50 UTC 2013 - 10 days"
       Sat Apr 27 16:40:50 UTC 2013
    # date --date="5/7/2013 - 10 days"
       Sat Apr 27 00:00:00 UTC 2013
    # date --date="$(date --date="400 days ago") - 10 days"
       Mon Apr  2 16:44:13 UTC 2012


    Update: Here’s a way to incorporate hour deltas:

    # date --date="2013-12-03 - 2 days + 2 hours"
       Sun Dec  1 02:00:00 UTC 2013

  3. Send & receive faxes with no land line

    I recently needed to send and receive a few faxes. I have an HP printer that has fax capability, but I recently got rid of my land line, so the printer is now useless as a fax machine.

    In this day and age, I figure sending a fax should be possible from any cell phone — a fax is just an image converted to data, sent to a phone number, and cell phones nowadays are computers that can certainly convert image data and already call other phones. But apparently it’s not that simple. Or at least I didn’t find the simple solution there that I was expecting to. I found apps that purported to do it, but then found lots of downstream fees. (If anyone knows of a solution here, please let me know.)

    Enter maxemail.com  I was able to sign up for a 30-day free trial, which let me do the following:

    • Send 3 free faxes
    • Get a dedicated phone number where I could receive faxes (total of 100 pages for the month)

    They also DO NOT auto bill you at the end of the month, which is unexpected and nice.

    Just upload the file to fax it and when you receive a fax it comes to your email as a PDF attachment. Very easy and convenient!

    Maybe you can benefit from my experience and not waste your time and money at Kinkos.


  4. Why I just voted for Barack Obama & straight Democrat

    Vote cast: Barack Obama & straight Democrat.

    I don’t typically go political here — or really anywhere. I don’t think I’m going to change anyone’s mind, and you’re not going to change mine. 

    But for what it’s worth, here’s why I want a second term for Barack Obama and why I want to return to a Democratically controlled Congress: 

    - The country does better economically under Democrats than under Republicans. http://bit.ly/SrWwUq

    - The country feels better under Democrats than under Republicans. During the Clinton administration, I was proud to be American. During Bush, I was embarrassed.

    - Republicans in Congress block any policies put forth by Democrats regardless of their content simply in order to deny Democrats credit for anything at all. This is not governing; it’s childish pettiness that leads to wasted time and money. http://ti.me/Ss2hBn 

    - Despite that stonewalling, Obama has had major accomplishments (http://bit.ly/Ss4z3u), but we don’t hear too much about them because the economy overshadows.

    - Mitt Romney’s plans have no details behind them (http://nyti.ms/QSmjTf). You can only assume he’d continue the boilerplate Republican direction or worse.

    - Grover Norquist holds most Republicans in Congress hostage – they should all be thrown out. http://ti.me/Ss2zZehttp://bit.ly/SrXXSP (Mitt Romney also signed the Norquist pledge: http://bit.ly/QSodn3)

    - I find most Republican policies crass, selfish, protectionist, and offensive. (And BTW, I am a professional, college-educated, white male who probably falls in the top 5% of income earners.)

    The excitement and hope that got Obama elected in 2008 has been all but snuffed out. Why? Probably because the economic recovery has been slow and disappointing, and because our expectations were too high. When the intelligent and well-intentioned president got to the table, he saw that he was going to be stonewalled at every possible turn regardless of the merits of the policies he was going to champion (http://ti.me/Ss2hBn). Please, let us bring back government process that actually achieves something.

    My one Colorado vote is apparently worth a thousand votes in New Jersey (http://bit.ly/Ss9fGx). Ohioans: Your one vote is also highly valuable. I hope you spend it wisely.

    I’m hoping that vote helps push the U.S. back to a Democratically controlled government so we can return to times of productivity, prosperity, and pride.


    Speaking of productivity, I have work to do. I now return to code & occasional, random observations on life.

  5. How to squash git commits when you’re in origin/master

    Normally, in order to squash git commits, you’re in a branch and you are rebasing against the basis for that branch:

    git rebase --interactive origin/master

    Today I wanted to squash the 5 initial commits in origin/master itself. I wasn’t in a branch. If you just run the above, it’s a NO-OP. Googling found this overly complex solution: http://stackoverflow.com/questions/598672/git-how-to-squash-the-first-two-commits and http://stackoverflow.com/questions/435646/how-do-i-combine-the-first-two-commits-of-a-git-repository.

    After a little experimentation, I ran this, which worked:

    git rebase --interactive HEAD~5



  6. Android Fail — And Huge Annoyance

    Consider this wrong user experience which seems to be the result of a recent software update to my HTC Evo:

    1. My phone is locked, screen is off. Bluetooth is on and connected. 

    2. Phone is in my pocket.

    3. I press and hold the Bluetooth headset multi-purpose button to initiate the Bluetooth dialer.

    4. First fail: With the Bluetooth dialer, the screen wakes up and unlocks. Now the phone is in my pocket and available for touch screen input.

    5. I speak a command to make a call. Call connected.

    6. Second fail: the screen is still unlocked and available for touch screen input — in my pocket.

    7. I finish the call (if the phone in my pocket didn’t think it received an “End Call” input)

    8. The phone, still in my pocket, is still unlocked and available to receive touch screen input.

    The result of this change is that my phone is doing all sorts of things during and after calls that I don’t want it to do: terminating calls, calling other people.

    What gives?!?

    In an effort to mitigate, I turned on security on the phone and it solves the post-call problem: after the call the screen waits for pattern, pin or password input. But during the call the screen was still happily unlocked and hanging up the call at will.

    Google? How about a fix?


  7. Android Apps - Most Used, Least Used, Least Liked

    With trusty smartphones in our pockets, we amass our personal arsenal of apps. Some get used, some don’t. I’m always looking to add useful apps to the batch and jetison useless ones, so I thought it might be beneficial to others to hear what I’ve found indispensable, useful, or a waste of my time on the Android app front.

    Drop me a line and let me know what else I should be using!

    I have an HTC Evo on Sprint.

    The first list represents the apps I use every day or quite frequently and find fairly indispensable. They are:

    1. Swype Keyboard - This keyboard is amazing and with the speech-to-text button built in, it is the feature of my phone that makes iPhone users drool.
    2. Handcent SMS - Miles above the native messaging app. I went to this app when I originally wanted to set different alert tones by SMS sender. It also has optional pop-ups when texts arrive, which is nice.
    3. Gmail - The android gmail does practically everything the web client does. Lots and lots of shortcuts.
    4. Tweetdeck - When I’m sitting and… “meditating,” I need to read streams, don’t I?!
    5. MeContacts - Awesome quick dial grid and widget.
    6. dialR - Because the native HTC dialer app blows chunks, I went for this one which lets you tap a single letter to jump to those contacts in your address book. Not perfect but much better than what comes with the phone.
    7. Native Bluetooth Dialer - It took some Googling to find this out, but if you hold down the answer button on your bluetooth headset, it will bring up the bluetooth dialer and prompt you to speak a contact or a command, including, “dial 000-000-0000” or “map 555 main st, denver, co”. Pretty nifty.
    8. Facebook - When tweetdeck won’t do the trick for things like sending/viewing messages,  checking in, uploading photos.
    9. HTC Clock - Multiple alarms with repeat functionality by day. Pretty basic but very useful.
    10. Weather Channel - Great hourly and 10-day views.
    11. GTalk - I wish I could use another app for GTalk purposes. I haven’t found a suitable alternative. What I really want is one, that lets me set different alert tones by sender (like Handcent SMS did for me with texts). Adium, can’t you help here and make a mobile version?
    12. Evernote - Great note syncing app between mobile, web and desktop. I keep things like future travel info (confirmation numbers, itineraries, etc), quotes from Arianna, movie and book wish list items, ideas, and anything else I need to capture.
    13. HTC Flashlight - Another iPhone envy-making app. It uses the camera’s flash at full power as a light source. Much better than using the screen!
    14. Maps - Obvious. Use it all the time. 
    15. PDANet - When Starbucks wifi is having a bad day, I can USB tether my laptop to my phone using 4G and it’s pretty damn good. 
    16. Public Radio Live Stream - I cannot emphasize enough that this is not the official NPR app, which sucks (see below). This app lets you stream live many, many NPR stations around the country. 
    17. EverPaper - This is as close as I’ve come to “Phone to Chrome”. EverPaper simply sends the URL of the web page you’re looking at to Instapaper. The only problem is that in order to access it, you have to go to instapaper.com. I’d like more of a push model, but this does the trick for now.

    These next apps don’t get as much use as the ones in the list above, but I do find them crucial for their purpose:

    1. Kayak - More typically, I’ll use their website to research travel, but if I’m not at my computer, the app is handy.
    2. OpenTable
    4. Angry Birds & Fingerpaint - Purpose: distracting Arianna for 10 minutes. “Daddy, I want to play Mad Birds”
    5. Pandora
    6. FlightView - Track flights, alerts when flights arrive, know departure gates.

    Here are apps I installed or were excited about and just don’t find useful at all: 

    1. Barcode Scanner - Parlor trick at best to scan my bottle of ketchup. I’ve never found a good use for this. I suppose it’s time is coming eventually with the proliferation of QR codes.
    2. Chrome to Phone - People say they love this for maps, but I find it easier to map it on the phone to begin with. I haven’t really found a need for this yet. I would, however, like “Phone to Chrome”
    3. NPR - Simple fail: You cannot listen to a complete program with one click. Rather, you have to download the program segment by segment. That means “add to playlist” 20 times to get one day’s All Things Considered onto your playlist. No thank you.
    4. Skype - Oh, I had such high hopes to use Skype on my phone. Then, the first time I tried, it told me, “You have to be on a wifi connection to use Skype.” “Great, why don’t I just use my computer?” I replied. I gave it a try anyway. The user interface blows. I could not find my way around the app to save my life. So much for bringing forward the UI paradigms from the full version. Nothing made sense. Example: “Mute” is indicated by a tiny green line on the mute button. But does the green line mean it’s mute or not muted? I couldn’t tell. “We can hear Curious George in the background.” “Oh, I thought I was muted.” Plus, there’s not way to quit the app that I could find. 

      Update: Apparently, Skype now supports or will soon support 3G. Unless they also are redesigning the interface, I’m not interested.
    5. Qik/Fring - Yeah, no. I tried Qik once with my mom, who also has an Evo and it was completely unusable. The video rate was like 2 frames per minute and the audio was completely unintelligible. Fail. Never went back.
    6. FM Radio - I was so excited when I heard the Evo had an FM Radio receiver built into it. Let’s face it: good old airwaves are sometimes the best reception. But alas: you can’t use it with bluetooth.

    Apps I wish I could uninstall but can’t:

    1. Anything Sprint
    2. HTC native phone dialer
    3. NASCAR

    How about you? Enlighten me.


  8. Dora, Boots and the OED

    While I did Arianna’s hair this morning — yep, I can do Arianna’s hair — she was watching Dora the Explorer: “Boots to the Rescue”. In that episode, Boots sings a song that Dora wrote for school about speaking both Spanish and English. The lyrics are something like:

    I speak Spanish and English, too.
    I like them both, how about you?

    Brilliant, yes?


    Anyway, in the episode, Boots comes to a forest and sees a crocodile. He has previously been warned in Spanish by Señor Tucán about the crocodile, and Boots repeats the Spanish word with his thick, American accent: cocodrilo.

    Now, as an armchair etymologist, to my ear and eye, that Spanish word has a severely misplaced “r”. Crocodile in English. Crocodile in French, I knew. But cocodrilo in Spanish? 

    My initial impulse was to scoff at Dora, Boots and their creators since they’re so easy to scoff at: “That can’t be how you say ‘crocodile’ in Spanish, Boots!” But then I figured there was no way Nickelodeon could get away with that kind of error (I’d hope). If it was correct, then at some point in linguistic history someone must have screwed up.

    Like any sensible web obsessive, I Googled “crocodile etymology” and found that both Spanish (cocodrilo) and Italian (coccodrillo) have it “weird,” while English, German, French, Portuguese, Greek, Romanian, Czech, Polish and many other languages have it “right.” 

    To wit, get this:

    cocodrilo - Spanish
    crocodilo - Portuguese

    That’s wild!

    So where did things go awry?

    The word was introduced into Ancient Greek in the 5th century B.C. by Herodotus when he described ho krokódīlos ho potámios or “the lizard of the river (Nile).” It is supposed that krokódīlos was a combination of krokē (“pebbly”), and drīlos/dreilos supposedly meaning “worm”. There’s some grey area on the suffix, and it’s already strange that the suffix would lose the “r” sound in the word’s original form.

    The “r” enjoyed the pole position in Greek and Latin for a thousand years or so. Then someone went medieval on its ass. Medieval Latin, to be exact.

    During the Middle Ages — somewhere between 4th and 9th century A.D. — the “r” shifted to the suffix and in Medieval Latin the word became cocodrillus. According to the OED, this was “a corruption of the Latin crocodilus (also corcodilus).”

    My God, this is a dyslexic’s nightmare!

    From Medieval Latin, everybody got all screwed up for like 700 years. In Old French from around the 13th to the 14th century, it was cocodrille. From there, it seeped into Middle English as cocodril, cokadryl, coquodrille, etc. In Italian it was cocodrillo. And in Spanish it became cocodrilo.

    The OED (under magnifying glass, no less!) points out that crocodile, “the original form [from the] Greek and Latin was restored to most modern languages in the 16-17th centuries.”

    Then here’s what’s weird: Even though the OED says that Italian became “crocodillo (in Florio)” and Spanish “crocodilo (in Percival),” somehow the repatriation of that itinerant “r” didn’t stick for those two languages. The OED offers no explanation why and, in fact, no acknowledgement that the “r” returned to medieval territory in modern Spanish and Italian. It *is* the Oxford English Dictionary, not Spanish or Italian, but still, it seems worth noting to me.

    I’m left searching for responsible parties and I’m not finding much. Therefore, I point my finger at the only logical remaining culprit: Dora. 

    And probably Boots, too.


    1. The Compact Edition of the Oxford English Dictionary, Oxford University Press, 1988, 1971.
    2. http://www.wordreference.com/es/translation.asp?tranword=crocodile
    3. http://crocodile.askdefine.com/
    4. http://en.wikipedia.org/wiki/Old_French
    5. http://en.wikipedia.org/wiki/Medieval_Latin
    6. http://perseus.mpiwg-berlin.mpg.de/cgi-bin/resolveform?lookup=krokodeilos&type=begin&lang=greek&searchText=&options=Sort+Results+Alphabetically&.submit=Submit&formentry=1&lang=greek
    7. http://www.amazon.com/Boots-to-the-Rescue/dp/B001UEI9Q2

  9. EverNote’s Fatal Flaw(s)

    Since I ditched my corporate Blackberry last May — and therefore ditched my ability to sync Outlook Notes with the notes on my mobile device — I’ve been in search of the right replacement for quick note taking, on the go or at my desk, synced between mobile and laptop.

    My platforms are long-since decided upon: Mac (MacBook Pro) + Android (HTC Evo). I’ve even found my preferred Task app: Todoist (though if I can find the time, I will write a new Android app for, it because the existing ones are lacking).

    But I still haven’t settled on a Notes app.

    EverNote is the obvious contender but after trying it a few times, there’s a fatal flaw that makes me uninstall it from my phone almost every time I try it, and it is this: You must have network connectivity to use it.


    If you don’t have connectivity and you try to pull up your notes, you get a Java error (“TTransportException: java.net.SocketException: Network Unreachable type=0”) followed by the notice, “No notes found”.

    I realize this is free software, but come on. This is one of the top-recommended Android Apps. Can’t we do better than this?!

    The EverNote intro video touts that “EverNote is always at the ready to record my thoughts and capture interesting stuff I see.”  That is, unless have no connectivity.

    So if you’re, say, on a plane with your network off. You simply have no access to saved notes. Period. You can’t read them at all. You can, at least, write a new note, and it’ll get saved to a “Pending Notes” area until the phone can sync.

    If I’m on that same plane and I want to know what time the flight lands and when my return flight is, both of which I’ve entered into my Travel Info EverNote, I can’t. Oh well.

    I suppose this was in an effort to avoid writing data locally to the phone’s SD card, but this should at least be a preference. There’s so much crap that apps put on your device, notes are the least of my worries.

    To make matters worse, if you do have connectivity and can use the app, the default screen when you open the app is not what this user woud expect to see in front of him: His list of notes! Instead it’s a useless options screen where the options don’t even include “View My Notes”. They are:

    • <Search>
    • Snapshot
    • Upload file
    • Text note
    • Audio Note

    How do you get your notes? You tap Menu > Notes. Huh? EverNote, you’re a notes app. I want to see my notes first and foremost. Don’t make me dig for them.

    My other gripe is that the note format only suports Rich Text. I, personally, want text only. I want to be able to copy and paste from a web page and have the text be free of all crazy formatting the web designers chose to apply. Like my itinerary, for instance. I bold text and crazy table formatting; I want clean text. (See Update.)

    Instead being able to copy and paste though, I need to “wash” my text in TextEdit before entering it in EverNote — a step that should be unnecessary. I should be able to choose “Text Only” as a format. Think of how nice and small my files would be sans markup!

    I suppose I could write my own Android app for EverNote with the API. Do I really want to do that? No, I do not want to do that.

    So, EverNote, since you guys are the reigning Notes app champs, please make your Android app better. Thanks…

    Update: I found “Simplify Formatting” in the Format Menu of the Mac app, which does strip some of the crazy formatting out of the pasted text. I’d still like “Text Only” as a formatting option.

    Update 2 (11/08/2010): Evernote 2.0 for Android was just released today addressing some of my concerns. Couple of problems on install, but worked fine after Uninstall -> Reinstall.


  10. FIX: Macfusion stops working with snow leopard upgrade

    I upgraded Mac OS X from 10.6 to 10.6.4 today and Macfusion stopped working. 

    Here’s what I did:

    1. After upgrading Mac OS X 10.6 to 10.6.4, Macfusion didn’t show my previously configured mount point at all. Updating Macfusion fixed this issue (Macfusion menu > Check for updates)
    2. After the Macfusion update, Macfusion threw this error on Mount: “Failed to mount: Remote host had disconnected”
    3. I checked Console and it showed this:

      Sep 21 09:13:07 mrwoof macfusionAgent[229]: Mounting
      Sep 21 09:13:07 mrwoof Macfusion[373]: Note status changed for fs  (/bitly) to Waiting to Mount
      Sep 21 09:13:07 mrwoof macfusionAgent[229]: Task launched OK
      Sep 21 09:13:07 mrwoof macfusionAgent[229]: dyld: could not load inserted library: /Applications/Macfusion.app/Contents/PlugIns/sshfs.mfplugin/Contents/Resources/sshnodelay.so
      Sep 21 09:13:07 mrwoof ReportCrash[443]: Saved crash report for ssh[442] version ??? (???) to /Users/mrwoof/Library/Logs/DiagnosticReports/ssh_2010-09-21-091307_mrwoof.crash
    4. The fix (thanks to http://jstsch.com/post/macfusion_and_snow_leopard):

      mv /Applications/Macfusion.app/Contents/PlugIns/sshfs.mfplugin/Contents/Resources/sshnodelay.so /Applications/Macfusion.app/Contents/PlugIns/sshfs.mfplugin/Contents/Resources/sshnodelay.so.bak