Tuesday, August 31, 2010

Picking Just One Toy

I caught this discussion on Amazon: If you could only buy one toy for your kids, what would it be?, and I have to say, it's been an interesting one to follow.

Sure, the premise is ridiculous. As one poster say so elegantly:

If you could only buy one food for your kids, what would it be? Now, that sounds ridiculous, doesn't it? Just as a child's body needs the nutrition from many different foods to grow up healthy and fit, so a child's mind desperately needs the stimulation and enrichment derived from many different toys and play experiences.

But still, the discussion has value. It's a source of useful ideas on what to get kids (a topic I'm always stumped on), as well as some fun ideas for play (a topic I'm always ready for more of).

Makes me wonder - if you had to pick your favorite toy to provide for your kid/niece/nephew/etc., what would it be?

How to feel fragile and small - The Pale Blue Dot

Just watch this, and tell me you don't feel just a little bit humbled.

I say, from now all, we be nice to each other.

Thanks to Gavin.

Monday, August 30, 2010

Small Business Quote Of The Day

From mnmal.org:

“If you think you are too small to be effective, you have never been in bed with a mosquito.”

— Betty Reese

Love it.

Friday, August 27, 2010

Phone Friday: uLoops Music Generation - More accessible than ever

A while back I mentioned how impressed I was with uLoops - a music generation app for the Android. Unfortunately, being a non-music guy, I found the interface cripplingly cryptic.

Well, I've checked back in on uloops.net, and I'm impressed with how they've made the system much more accessible:

  • There's a wonderful new tutorial video that takes you through how uLoops works
  • There's an onscreen tutorial you can walk through which impressively blends overlaid instructions with the application itself.
  • There's an active forum
  • You can import any uLoops song into the authoring environment to learn how it was created
  • Not only can you browse the website to listen to any song, but you can listen to individual loops within a song to see how it was composed.

I found that after I watched the video above I was actually able to get uLoops to make some nearly-pleasing sounds. Most importantly, it was a lot fun!

This app definitely belongs on my Things To Do While Waiting Around list.

Review: The Suvivors Club

After reading Ben Sherwood's book The Suvivors Club, I can tell you that in a crisis you probably won't panic. And that's a good thing. Nope, instead you'll probably freeze up and do nothing. This, of course, is just as bad as panicking, if not worse.

Sherwood explores this brain freeze issue, as well as many other topics of survival in his book. One explanation for why you'll probably lock up is that in a crisis your brain will go off searching for a comparable experience, only to not find one, which in turn kicks off the search again. The result is an infinite loop.

One way to combat this phenomenon then is go through training, which gives your brain some experiences with which to compare the current crisis too.

Using this line of logic, I think most valuable aspect of the The Survivor's Club is that the comprehensive list of stories can serve as sort of a starting point for dealing with emergencies.

And what a comprehensive list it is: from cancer and holocaust survivors, to a woman who fell 30,000 feet from an airplane (and lived), he's got it covered. From well known tragedies such as the Central Park Jogger to more private individual stories, such as a survivor of an attempted suicide from the Golden Gate Bridge. You've got to hand it Sherwood -- he's done amazing amount of research for this book.

While the stories are spellbinding, I did find the comprehensive nature of the book a bit tedious at times. Every angle of survival is explored, so I guess its only natural that some parts of this topic didn't interest me.

I almost didn't rent The Survivor's Club from the library. I thought listening day in and day out to disaster after disaster would be just too depressing (and not to mention fear inducing). I'm glad I ignored this instinct. The stories here, for the most part, are positive and having some reference point for the best way to survive a particular disaster is just too invaluable.

Thursday, August 26, 2010

Streaming Your Web Surfing Routine

If you use Google Reader already, you can skip this article. Nothing here for you.

1) Do you have a routine where you check more than one website throughout the day? Maybe you start your day by checking Knitting Daily then hop on over to PunkNews.org.

2) Do you use Google Reader yet?

If you answered Yes then No, then boy are you in for a treat.

Here's what you do: Sign up for Google Reader (it's free, so you've got no excuses). In the top right hand corner, there's a button labeled Add Subscription. Click it, and paste in the URL of a site you visit regularly. Now repeat this process with all the sites in your daily routine.

Now, instead of visiting a number of websites throughout the day, you can just visit your single Google Reader account. It's faster, more organized than trying to remember which sites you've visited.

There are a variety of other features you get with Google Reader: you can star articles that interest you, easily share articles, etc. But the real value in Google Reader is that it allows you to follow infrequently changing sites.

Suppose you find a site you really like, but go back to it every day for a week and it hasn't changed. Eventually, you'll just stop checking. With Google Reader, the site can remain dormant and as soon as new article is posted, it'll be there ready for you to read.

Wednesday, August 25, 2010

Bagless Travel - Publicity Stunt and Armchair Adventure

I stumbled across the No Baggage Travel Challenge and found it amusing. As I read what one packs for bagless travel, I thought it sounded awfully familiar. And it should: the adventurer behind this is none other than Rolf Potts, author of Vagabonding, a book I just finished.

The goal is simple: travel around the world without carrying any luggage.

Yes, it's a publicity stunt for Scottevest - but still, it seems like a novel challenge to follow along with. It doesn't hurt that I really like Rolf's writing.

The challenge, of course, brings up the question: is bagless travel even possible? So far, I think the answer is Technically, Yes. But, is it practical? Not so much. Heck, with our little one, I find I can't leave the house without bringing at least his diaper bag. Still, there are lessons about packing light to be learned here. And who knows, maybe I'll be sold by the end of the trip.

Here's Rolf explaining what he's bringing along. The one item I'm surprised he's not bringing along is some way to charge up his electronics. But, I guess he'll learn soon enough if that was a smart move or not.

Emacs Quickie: Adding up a column of numbers

The other day I wanted a quick way to sum up an emacs buffer full of numbers. Surely, there must be a function that does such a thing out there? Of course there is. And it's already installed. The answer is calc - one of the coolest parts of emacs.

Calc, as the name suggests is a calculator and one of gems of emacs. I like using it because it uses RPN notation, which makes it unambiguous to use. And the trail window makes it easy to see what numbers added up to what. And of course, not having to switch to another application, means I can do my math and get back to programming sooner (and without touching The Rodent)

But the way I use calc only lightly scratches the surface of its functionality. What I needed for solving the above conundrum was in the manual under grabbing from other buffers. Specifically:

  • calc-grab-region: Slurp in a set of numbers into a Vector structure in calc. And once you've got your vector of numbers you can do interesting things with it.
  • calc-grab-rectangle: Same as calc-grab-region but with rectangles. (You do use rectangles -- right?)
  • calc-grab-sum-down: Does just what the name suggests and just what I needed.

In classic emacs fashion, you can accomplish the same thing as calc-grab-sum-down by typing:

 M-# r V R : + 

Obvious, right?

Seriously, every once in a while I look at the calc manual and think to myself, I really need to do more math so I can play with more of these features.

Tuesday, August 24, 2010

Man Plans, God Laughs - Baby Edition

This morning, at 4:15am I finished up a wonderful late night session of computer programming. By 4:18am I was lying in bed, looking forward to 2-3 hours of the most delicious sleep of my life. And, you guessed it, at exactly 4:28am, our little one decided he wanted to get an early start on the day.

I trudged into his room. I'm not proud of it, but I'll admit it - I actually attempted to bargain with our 1 year old. I promised him he could have anything in the world he wanted if he would just roll over and go back to bed for a few hours.

Thing is, when one's own requirements are a clean diaper, a full tummy and free range of the house to explore, there really wasn't a lot I could offer him.

So, I got up and we had breakfast and some fun time playing.

I keep telling myself, it was more fun playing than sleeping anyway. Life's too short for sleeping.

As they say, Mentsch tracht, Gott lacht.

Make Gardens, Not War

But how you ask? Easy, make all your bombs seed bombs:

Luckily, seed bombs exist! They are the perfect way to secretly, sneakily beautify all those empty lots and highway embankments that are part of the urban landscape. And they're crazy easy to make!

I followed the directions that I found here. Alls you need is dirt, some hardy, native seeds and some air-dry clay (which is available in the craft aisle of any big discount or craft store). If you've ever made dumplings, raviolis or truffles, you'll be a seed bomb master. And if not? No worries! It's a pretty low learning curve.

Now that I've got twenty five of these little beauties drying on my kitchen table, I can't stop thinking of all the places that I'm going to throw them.

It's all about Guerrilla Gardening. And if you want to get in on the action you can roll your own or just buy one from Amazon.

Is this actually a good idea? Not sure yet. I'd want to do some research before I started reeking havoc throughout the neighborhood. It's probably best to work with the local authorities rather than against them.

Still, it's a clever idea and could make from some Sunday morning fun.

Hertz Rent-a-Car - Surprinsingly Family Friendly

We just got back from a trip to Boston, where we yet again rented from Hertz. The rental went well - we got a free upgrade to a larger car (not something I'm usually excited about, but with car seat and stroller in hand, it was I have to admin, awesome) and the car seat we rented was clean and in perfect working order.

But, the real winner is that for the second time in a row, at drop off, a Hertz employee has driven us in the rental car, to the airport terminal. No unloading the car, loading the bus, waiting with an active/crying/chattering little boy, and then hurriedly unloading the bus. Nope, just door to door service.

Previously, Hertz offered the service to us and we were just blown away. This time we timidly asked if they'd give us a ride, and there were more than glad to oblige.

So: (a) if you've got children consider Hertz. And (b) if you're in business, never forget the power of going above and beyond. What may cost you being down a team member for a few minutes, may make a customer's day.

Monday, August 23, 2010

Weekend with the twins: 17 months

We headed up to Boston last weekend to see the twins and their parents. The visit was short, but we had a great time. The highlight of Friday was making it to Drumlin Farm . This farm on the outskirts of Boston offers animals to view and pet and wonderful grounds to explore.

The twins and our little one got along great. Of course running after the three of them was exhausting, but they made it well worth it. It is amazing to watch them grow and develop their personalities. Chana's all smiles and Dovid is content as can be. And our little one didn't stop exploring the whole weekend, taking off just a little time to sleep.

The photos below don't really capture the cuteness of the weekend. Can't wait to see them soon.

Friday, August 20, 2010

Phone Friday: Tracking My Jogging

I'm not usually a fan of gyms - but I've got say, Bally's has totally won me over recently. No, it's not a new machine or class. It's one magic word: Babysitting!. Our little one now qualifies for their child care, and we've started taking advantage of it.

This means I'm freed up to start running again! Whoo!

While I really liked my Google Spreadsheet for tracking my runs, I was curious if there was an existing Android app that would automate the whole data entry side of things.

Of course there is -- I give you: Handy Runner. The nice thing about Handy Runner is it does just what it's supposed to do, and not much more. It allows you to start a run, stop it, and have it automatically published to a tracking service. It calculates more stats than I care about, and records my GPS track which is a nice bonus, but that stuff stays out of the way.

Along with simplicity, the other key feature it brings is integration with RunningAHEAD.com. RunningAHEAD is a free platform for storing your workouts. While it can track all sorts of sophisticated aspects of your workout, it appears to do just fine with the data Handy Runner will automatically feed it.

As a bonus, it provides a public view of your workouts you can share with the world, as widgets for embedding in your blog:

Here's a key tip before you go for your first jog. Make sure Handy Runner is in your ignore list of your Task Killer. Otherwise, like me, you'll finish the run and find that it didn't record a thing. Whoops. Lesson learned.

Happy Running!

Thursday, August 19, 2010

A Simple Guide To Simple Living

I keep tripping over this whole Living Simple movement, and I thought a book on the topic might make for a good next read.

While researching books to take out from the library* I came across this wonderful comment by EternalSeeker:

Simplify, simplify! I am afraid as an old practitioner of voluntary simplicity I was confused and depressed by this book, which seems to offer very little in the way of true simplification and much in the way of things-I-didn't-know-I-should-be-worrying-about.

She then goes on to define Simplicity:

  • Get rid of anything you haven't used within the past year.
  • Pay off your credit cards and just keep one or two for real emergencies.
  • Be monogamous.
  • Give your time instead of money to those you love.
  • Turn off the TV.
  • Think about how to live with only half of the possessions you have and then DO IT.
  • Eat fresh, simple, whole [organic] foods. Drink water.
  • Create a garden and spend time in it (instead of watching TV).
  • Let other people worry about "getting ahead", status trips, newer cars and bigger houses, trendy clothing.
  • Read: How To Make Your House Do The Housework.
  • Read 'Walden' By Henry David Thoreau - often

What a wonderfully concise list! I think I'll skip the book, find a blog or two and just mull over the above list.

Simple enough, eh?

*I'm definitely amused by the irony of convincing people to buy a book on how to live with fewer possessions in their life. The library is a nice fix to avoid this silliness.

Update: I forgot to mention -- even the music I was listening to last night was encouraging the Simple Living philosophy.

Wednesday, August 18, 2010

Gotcha of the Day: Forcing PHP to Cough Up Syntax Error Information

I ran into an especially annoying problem with PHP this morning. I was working on a server that had display_errors set to false. That's good. But, the server gave me no way to view the HTTP error log. The result was that when I published a page with a syntax error, the browser screen was blank, leaving me no hint as to where the actual error was.

I tried forcing the display of errors, but that didn't work.

Next up, I thought I'd try ssh'ing to the server and manually running php there. Just running:

bash-3.2$ php foo.php

produced no output. This makes sense, as it's essentially what the web server was doing, and it wasn't generating output.

After running php -h, I learned there was a syntax checking mode (lint - whoo!) that I could use. I figured this would be perfect. Here's the output of that attempt:

bash-3.2$ php -l foo.php 
Errors parsing foo.php

This confirmed my hunch that syntax errors were causing the problem, though for the life of me, I couldn't get the -l flag to actually tell me the errors it found.

Finally I came up with this recipe:

bash-3.2$ php -d display_errors=Yes \
 -r "error_reporting(E_ALL); require('foo.php');"

Sure enough, PHP finally hollered back at me:

PHP Parse error: syntax error, unexpected T_VARIABLE in /var/www/vhosts/bar.net/httpdocs/foo.php on line 608

This was just enough info to let me fix the problem.

There's almost certainly an easier way to accomplish this. But still, it worked and that works for me.

Update: As soon as I hit the publish button on this post, an easier solution popped into my head. I realized, I could simulate the same command line as above using PHP files.

Suppose I suspect foo.php of having a syntax error. I can create another file, error-shell.php that reads:

<?
ini_set('display_errors', 1);
error_reporting(E_ALL);
require_once('foo.php');
?>

When I access error-shell.php it has a chance to correctly load up, set the correct verbose error settings and then do the include of foo.php. In a quick test I ran, it did show me the syntax error that was hidden if I attempted to access foo.php directly.

I suppose I could extend this further by looping through a list of .php files to syntax check a whole bunch of them at one time.

Tuesday, August 17, 2010

Mind Bending Exercise: The Jug Knot

I came across this discussion about the best way carry a water bottle, and thought the suggestion of using a Jug Knot was an especially clever solution.

Of course, I don't know how to tie the knot -- yet. There's all sorts of resources out there, to learn it though: a PDF, an Instructables, and of course YouTube.

I think it's going to take some practice, but I'll get it. Boy, does this bring back some pleasant memories of Scouts and learning to tie knots. (One handed bowline anyone? How about a dragon bowline?)

Personally, I love the original poster's parting words: it's much simpler than it looks, trust me .... You all can tie this knot.

Tool of the Day: sar and bsdsar

Tools like uptime and free (or freecolor on FreeBSD) are terrific. But, what if you want to get stats from the past few hours or days? You could rig up a shell script to capture these tools to a log file.

Or, you could use the almost-magical sar or bsdsar tools.

These commands efficiently maintain a history of your server performance and allow you to get to the stats after the fact. This is wonderful when you think you've got a server performance issue, but don't have much in the way of stats to back up your hunch.

My suggestion: make sure the sar command is installed *before* you need it.

On Linux I run:

 yum install sysstat

To get access to the sar command. On FreeBSD I followed the helpful instructions here.

Monday, August 16, 2010

Review: Vagabonding

I wanted to like Vagabonding by Rolf Potts even before I started reading it - it's wonderfully skinny. And fortunately, the text lived up to the promise of such a slim volume. As travel-howto style books, this has to be one of the best I've ever read.

First off, the book is fundamentally optimistic. Want to travel the world? Excellent - you don't have to wait till some far off milestone to do so, you can do it now! (OK, well, maybe you'll need a few months of prep - but still, travel isn't a far off dream).

Next up, the book tries to help you capture what's important about travel - things like beauty and adventure. And as I've learned through the years, and as the book underscores, these aren't necessarily found where the brochures point you to.

Finally, I love the lessons of simplicity emphasized in the book. For example, the entire packing list for a multi-month trip is outlined in a single paragraph of prose. It's beautiful.

Perhaps, most surprisingly, I found that this book didn't give me the long term travel bug. I was expecting that I'd long for a 3 month trek through Asia. But alas, I found myself quite content to either apply advice to my relatively short trips, or enjoyed reading it from an armchair adventure perspective.

In many respects, author has you covered in this department too. As he explains, the principles that work for long term travel can work in your own home town. And I believe he's absolutely right. Within an hours drive there are no doubt breathtaking views, colorful natives and untapped adventures. One only need to take the time to seek them out.

This may be the most valuable point in the whole book.

Friday, August 13, 2010

Phone Friday: 5 Apps I'm Loving

Ever since I've put some thought into how I could use my phone to make better use of waiting-around-time, I've managed to discover a number of apps that I'm really impressed with.

  • AK Notepad - I was actually using AK Notepad back on my G1 for a number of years, and then slimmed down to just using jotter (which is still a super cool idea). I've reloaded it on my myTouch for one key feature - it sychronizes with Snaptic.com. This means my notes aren't locked in my handset. I love that I can publish a document through Snaptic and easily edit it on my handset. In many ways, I'd preferred to use Gdocs to get this sync/publishing effect, but alas, Swype wasn't working when I installed Gdocs for some reason.
  • DC Transit Info - Back in my G1 days I downloaded the Metro map to my phone and felt cool. Only, it wasn't that handy. Not so with the DC Transit Info app. It tells me up to the minute info about when trains are arriving. I'm a programmer, and even I'm amazed at how accurate and real time this bad boy is. If you use the DC metro system, this is a winner.
  • AppBrain.com and/or Uninstaller - I've been using Uninstaller for a while, and just started using AppBrain today. Both solve the problem that it's easy to install apps on the phone, but a hassle to uninstall them. Uninstaller makes evaluating software easy - install as much as you want, and then blow away what you don't need. AppBrain is an amazing concept, and one that's got potential beyond just pain install/uninstall of programs. If you find yourself playing with lots of apps, these will be essential.

  • Task Manager - If you had told me that the secret to both good battery life, and not having your phone slow down when you install lots of apps was Task Manager, I'd think you were crazy. And I'd be wrong. The Task Manager automatically kills off any process you haven't put in an ignore list. The result is that the phone stays a lot less busy. Less busy means more responsive and better battery life.
  • Apps Organizer - With all these apps, and a relatively small desktop space (just 3 screens worth on my myTouch), I was finding it harder and hard to quickly launch apps. With Apps Organizer you can essentially create folders for apps that are accessible from the main screens. It's a clever solution that blends nicely with the now aging UI of the myTouch. The hardest part is figuring out the best way to organize my apps. I suppose that's a good problem to have.

Thursday, August 12, 2010

Google Calendar Find: Event time can include a time zone

I've known that when you enter a new task in Google Calendar you can prefix it with a time to schedule it for the day. That is, I can say:

 12:30pm, Write up that blog post I was thinking about

My discovery today: if I add a timezone abbreviation to the time, it'll not only add the event, but convert it to my timezone. So, I can say:

 12:30pm PST, Talk with my surfer friend

This automatically gets added as an appointment at 3:30 PM my time.

Add to this the World Clock Labs option, and my Google Calendar makes coordinating with folks across multiple timezones much easier.

Tuesday, August 10, 2010

A United Airlines Customer Service Suprise

The Story

The other day I'm making flight reservations over at United.com and the most amazing incident happened. I brought up a fair of $150/ticket on my screen, but for reasons not worth getting into, I had to make the actual ticket purchase over the phone. So, I dialed up the good people over at United Airlines. The customer service rep explained to me that fare I was looking at was actually $375/ticket.

How the heck could this be? To make a long story shorter, it turned out that on the next step of the web process there was fine print explaining that the fare was no longer available. While I thought I could get the tickets for $150 each, they were actually $375.

I'm a programmer. I can appreciate how data gets stale and an index may be out of sync.

Annoyed, I listened to the customer service agent read off a closing script. I was told there was going to be a survey at the end of the call (which I was in mood to take), and one of the questions was to rate my overall satisfaction, and would I mind telling him now the answer to this. Well, I explained, at the moment you guys are ranking at about a 2 out of 5. To my amazement, he responded, that he'd like me to talk to his supervisor to see what we could do about this.

After a few minutes on hold, he came back and explained that his supervisor was glad to give me the tickets at $150 each.

He then recited, in the same robotic voice, the spiel about the survey and how did I rank them. I had no choice, I had to give them a 5 out of 5.

The Lessons

This really has been an eye opening experience. Who knew that the price of a ticket could be overridden from what the computer demanded it be? And who knew that a low level support rep could take a proactive role and get his supervisor involved without me asking?

But the really clever lesson I'm taking away from this is how United Airlines has managed to take a detached force of phone jockeys and turn them into customer pleasing machines. Sure, they could have attempted to hire only the most empathetic, sympathetic and independent thinking reps. Or, they could hire the same staff, but give them a simple litmus test to run at the end of a call. It's wonderfully simple, yet surprisingly powerful.

Monday, August 09, 2010

Gotcha of the Month: Windows 7 Network Apps Failing

Over the last month or so, various apps have stopped working on my Windows 7 laptop. They included:

  • Chrome with the error: Error 102 (net::ERR_CONNECTION_REFUSED): Unknown error.
  • Skype with the error: unable to connect (during the login stage)
  • Trillian: unable to connect to any connections
  • Adobe AIR: Adobe Error #2032 (error while streaming)

I knew that all these apps couldn't be breaking randomly - there had to be an underlying network issue. I tried updating the Windows Firewall and just plain turning it off. I tried disable spyware and anti-virus. I tried rebooting. Oh, did I ever try rebooting.

Finally, today, I was yet again at the end of my rope and noticed that my Norton subscription wasn't active. So, on a whim, I decided to resign up for Norton Anti-Virus. After yet another reboot, all my services came back to me.

If I wanted to take the conspiracy theory route on this, I'd suggest that perhaps Norton Anti-Virus purposely left my machine in a broken state so I'd have to upgrade. But, that's probably be too kind.

More likely, it's just the result of Windows and Norton getting out of sync - that's what you get for having lots of moving parts and allowing really low level access to a 3rd party, expiring application.

Now I'm back on AIM and Skype - which of course means that my productivity will be going down. But, whatever.

Legg Mason Tennis: Still Fun, Still Hot

Last year, we had so much fun at the Legg Mason Tennis Classic, that we knew we'd have to make it back again. And so we did. And sure enough, this year didn't disappoint.

Of course, it was hot. Maybe not quite as hot as last year, but still, sitting in the sun cooking for 5 hours is going to leave you a bit toasty. Of course, it's hard to complain when there are athletes actually running around in front of you. How they do this, I can't imagine.

Both the Doubles and Singles matches were a thrill to watch. In both cases, one player or team came out dominant against the other. In the case of the double match, though, Fish and Knowles managed to pull out the win. In the singles, Nalbandian managed to keep his early lead, but not without Baghdatis really making him work for it.

I suppose that's the part about tennis that I'm really beginning to appreciate. So often, it seems like it's going to be a blow out - and yet that's just not the case. Like baseball, the game effectively has no clock, so there's always a chance for the underdog to prevail.

As for the event itself, it didn't quite seem as crowded as last year - but what the heck do I know. This year they were handing out small over-the-ear radios that broadcast live commentary about the game. I guess I could be a tennis snob and say that I preferred just viewing the game minus any chit-chat, but that's not the case. The banter definitely helped me appreciate the game and all its nuance.

What a treat it is that we can see tennis stars play for relatively cheap tickets and a 45 minute metro ride.

Some photos of the event. Alas, unlike last year, we didn't catch any shirtless warmup time. Sorry babe.

Friday, August 06, 2010

10 Android Strategies To Make The Most Of Waiting Around Time

Yesterday, I had a doctor's appointment - and of course, the doctor was running late. After an hour of waiting, I realized I needed some fresh strategies for dealing with these kinds of delays.

So here it is, 10 ways I plan to make the most out of my waiting room time using my Android based myTouch.

  1. Use the market app Aldiko to read a classic book. I've since loaded Thoreau's Walden and Civil Disobedience.
  2. Use the market app Knot Guide to learn and practice new knots. I've got to remember to carry around a short length of rope to use this one.
  3. Use the mobile version of Google Reader to find cool content on the web. I've since updated my Google Reader account to have a variety of high volume, high quality sites like LifeHacker so I'll always have something to read.
  4. Use the market app MorseCoder to learn and practice Morse Code. I should remember to bring along headphones so I can get the full dit and dat effect.
  5. Watch full TV episodes using TV.com's market app. Surely one episode of TV can't rot my brain?
  6. Create a fresh twitter account and use it to publish One Sentence Stories, Twitter Fiction or if I'm feeling especially creative Twitter Poetry. I've got to be especially careful, though, cause this can get out of control.
  7. Use the market app Factbook, a version of the CIA World Factbook, to plan our next exotic getaway. Really, I mean it.
  8. Use the SAT Vocabulary market app to learn a few new words. This should also make a fun trivia game if I'm waiting with a friend.
  9. Use one of the many Chess market apps to finally learn how to play the game. I'm told it's a game that you can pick up relatively quickly - so let's find out.
  10. Use the Audiobooks market app to seamlessly download and listen to audio books. This is an especially handy because after sitting around a waiting room, you can continue listening to the book on the way home.
  11. Bonus: Use the Sketcher app to practice drawing. This is my chance to bring out my inner Leonardo Da Vinci.

OK, I'm feeling a lot more prepared. Go ahead life, throw some delays at me -- I'm ready for 'em! (Of course, if you could make sure my phone was fully charged up and had a fast Internet connection, that'd be great.)

Oh, and I'd love to hear your favorite tricks for making the most of wait time -- please share them in the comments of this post.

Update: The wife read this list and suggested a good activity would be to send her a romantic e-mail or SMS. Nick suggested Andoku app, writing Twitter Haiku and Overdrive to listen into free audio book. All great suggestions - I've added them to a new master list here (or you can use the QR code below).

Wednesday, August 04, 2010

Artist of the Day: Sade

Dave gave me an odd look when he heard me hacking away to Soma FM's Lush station. With a description like Lush: Sensuous and mellow vocals, mostly female, with an electronic influence, I suppose I can't blame him.

I explained that it was an entire channel that sounded like Sade - to which he asked, who's Sade?

I thought everyone knew Sade. Her quintessential song, No Ordinary Love sums her up:

As you can imagine, if you're in the right mood, nothing beats Sade. What that mood is exactly, I can't really explain. But she should be in every listener's toolbox, if you ask me.

Tuesday, August 03, 2010

Handy Emacs Function: url-decode-region

Every once in a while I get the need to URL decode some text while hacking away in emacs. I always spend a few moments looking for a way to do this, but usually give up. Tonight, I dug just a little deeper and learned about url-uhex-string.

This function does the URL encoding, but isn't interactive by default. So here's a quick elisp function I wrote up to make it so:

(defun url-decode-region (start end)
  "Replace a region with the same contents, only URL decoded."
  (interactive "r")
  (let ((text (url-unhex-string (buffer-substring start end))))
    (delete-region start end)
    (insert text)))

Now, I can highlight a region, and type M-x url-decode-region, which is what my fingers wanted to do all along, anyway.

If the need arises, or anyone is interested, I can write up url-encode-region.

Gotcha of the Day: ProFTP server claims password is wrong when it isn't

I was trying to do something really simple: add a new FTP user to a server. Everything went great, except, I couldn't actually FTP using the new user credentials.

Whenever I did, I got the following error in /var/log/auth.log:

Aug  3 09:28:30 XXX proftpd[7352]: a.b.c.d (a.b.c.d[a.b.c.d]) - USER foo (Login failed): Incorrect password. 
Aug  3 09:28:30 XXX proftpd[7352]: a.b.c.d (a.b.c.d[a.b.c.d]) - FTP session closed. 

I tried resetting the password, ssh'ing as the new user, and su'ing as the new user -- these all worked, yet I kept getting the above Incorrect password message.

Poking around on the web, I was inspired by this article to check the PAM configuration. I opened up /etc/pam.d/ftpd and my problem immediately became obvious:

# PAM configuration for the "ftpd" service
#
auth            required        pam_group.so            group=xftp
auth            required        pam_nologin.so          no_warn
auth            sufficient      pam_opie.so             no_warn no_fake_prompts
auth            requisite       pam_opieaccess.so       no_warn allow_local
auth            required        pam_unix.so             no_warn try_first_pass
account         required        pam_unix.so
session         required        pam_permit.so

The first line was the critical one -- it says that any user logging in is required to be in the xftp group.

I edited /etc/group and added the new user to the xftp group - and bam! it was working. Just like that.

So the lesson of the day: when in doubt check the PAM configuration.

Monday, August 02, 2010

Gotcha of the Day: Punching a Hole Through Apache Authentication

When I setup a dev site, I like to throw up .htaccess authentication on it. That way, search engine bots won't crawl and index it, and end users won't discover it and get confused.

But, last night, I ran into a classic problem with this configuration which is that there are times when anonymous access to the site is needed. Last night, this anonymous access was needed by the PayPal IPN architecture. But, this same sort of issue comes up with any sort of asynchronous notification is involved (like with webthumb's notify requests).

It's tempting to simply drop the authentication requirement from the dev site, but that's problematic because the reasons it exists are essential ones.

After mulling this over, I decided I'd try a different strategy. I'd go ahead and leave the site as password protected, but put the scripts that need anonymous access in their own unprotected directory.

That is, assuming the webroot is public_html, I'd put my IPN notification script in the following directory:

 /public_html/async/ipn-handler.php

I knew I needed to put some sort of special configuration in async/ipn-handler.php, but what. I read through the Apache docs and arrived at the following:

Allow from all
Satisfy Any 

The first line says that any host can access this directory. That is, there are now host or IP address limits on this directory. But, that line alone doesn't really help matters - because the .htaccess authentication at the root level requires a valid user.

The second line, the satisfy directive, says that either user authentication or host authentication are acceptable. Because all hosts are welcome, anyone can get in.

The result is a private site, but with a single publicly accessible directory. The scripts within this directory are written with this in mind, can gracefully be invoked by a search engine bot or curious user without harm (though, how'd they guess the name of the script or directory is beyond me.).

Friday, July 30, 2010

WebThumb: An Ideal Developer's Tool For Web Snapshots

Being able to take an on the fly screenshot of an arbitrary URL is a wonderfully slick feature to include in a web app. And while it's possible to rig up your own solution using Xvfb, using a third party solution is much less painful. Today I got to play with webthumb.bluga.net and pretty much fell in love.

It's about as developer friendly as you could ask:

  • Various pre-built API libraries to integrate with
  • A clean REST API that allowed me to rig up a quick and dirty curl+simplexml solution in no time
  • Lots of flexibility in terms of the sizes and formats of images generated
  • The option of including some special effects when generating the thumbnails, so they have a bit more umph.
  • Both polling and notification models for picking up images, allowing me to choose the approach that best fit my app (I went with the notification model)
  • A demonstration on their home page that lets you try out the service on any URL
  • A software developer behind it all who quickly and thoroughly answered questions about the service my client had

So yeah, I'm happy I found and am working with them.

Blogger for hosting a non-blog oriented site

Today, while checking on when the library opens near me, I noticed that they did some sort of site redesign and I was liking it.

Then I looked at the address bar - it's a blogspot.com URL. I have to say, I am really impressed - someone managed to create a Blogger site that definitely didn't strike me as a blog.

At first, I thought it might be the new Blogger Pages that made this layout possible. Though, I don't quite think that's it. Pages allow for secondary content, but still assume your home page will made up of blog posts.

Instead, I think they may have gone the route of outlined here to create a custom front page. It's a clever solution and one worth knowing about.

I'd definitely suggest reviewing the librarry site - it's an excellent example of how you can put up a solid internet presence with almost zero infrastructure or costs.

Thursday, July 29, 2010

Gotcha of the Day: Creating PayPal Sandbox Accounts

The PayPal developer sandbox is a great idea that I always find a bit mind numbing to work with. You've got a developer account, and within that account, sandbox users and multiple browser windows open to manage it all. Still, it's a necessary part of working with PayPal.

I was following the Sandbox: Getting Started Guide when I ran into trouble creating sandbox users using the pre-configured options. I'd fill in all the necessary details, click submit, and get back the vague error: Account Creation Failed !!!.

The message had to be serious, as it had not one, not two, but three exclamation points after it.

But why did account creation failed?

The obvious thought was that the e-mail field had a single word in it, in this case seller instead of a real e-mail address which the docs appear to call for. But, the e-mail field is limited to 6 characters, so try as I may, I wasn't able to put a real e-mail in there.

Finally, after much poking around I realized the source of my problem: you can't use the word password as a password. I found this out while attempting to manually create a user. I changed the password to something a tad bit more advanced, and poof, the account was created.

Sure, I shouldn't have been using password as a password (even if this is a sandbox, and the user was temporary). But, perhaps they could exchange one of the exclamation marks above for the actual underlying error?

Public Service Announcement: Drowning Doesn't Look Like Drowning

I think Exploriment has the right idea highlighting this post on recognizing a drowning person:

The Instinctive Drowning Response – so named by Francesco A. Pia, Ph.D., is what people do to avoid actual or perceived suffocation in the water. And it does not look like most people expect. There is very little splashing, no waving, and no yelling or calls for help of any kind. To get an idea of just how quiet and undramatic from the surface drowning can be, consider this: It is the number two cause of accidental death in children, age 15 and under...

Seriously, go read the article.

While we're on the topic of recognizing dangerous situations, it's worth remembering how to recognize a stroke.

Just Hanging Around

Tonight's house hold project was to hang a plant a friend gifted to us (thanks Jenna!) in our kitchen. While this was a simple project even by my standards, I'm amazed at how smoothly it went.

Anytime I have to put hole a hole in a wall or ceiling, or heck, need to stand on a ladder with a sharp implement, is a chance to do some damage. And tonight, everything worked just like it should have.

Of course, Ayers Hardware had all the supplies I'd needed, including chain to hang the plant that I could tease apart using pliers and not a bolt cutter.

One final thought - drywall is truly amazing stuff. You look around a room and see walls. And those walls look solid. But of course, they're really thin and easily manipulated. It's illusion worth overcoming and projects like this one really help do that.

Tuesday, July 27, 2010

Caption Me, Multi-Photo Edition

Here are a few snapshots I've taken over the last couple days...go ahead, caption me!

For the one by candle light, I'd caption it: The power was out, but hope was not lost - we had fluff!.

Entertaining, Clever and Sadly, True

I love this clever short - it's really well done. The music is wonderful, and the story quite clever. Alas, the message, while sad, is probably true.

Thoughts?

Monday, July 26, 2010

Earn the respect, save the money

I wonder what would happen if I updated my e-mail signature to include:

Sent from my iPad

Would people think, Man, Ben is one cutting edge guy?

What do you think?

Power Outage Hack - A Religious Experience

Yesterday, at around 4pm a nasty thunderstorm was on the horizon. As we waited for it to roll in, our power mysteriously went out. We went ahead and called up the power company, and was told that it would be back on by 8pm. 8pm? The storm hadn't even started yet -- what the heck?

The storm came and went in about 30 minutes. No power. 8:00pm came and went. No power. At around 2:30am, we got power back.

Luckily, we had a handful of storm lights all charged up throughout the house, so losing power didn't exactly leave us in the dark.

While the flash lights are great, they don't have the best battery life and don't exactly light up a room. So, we decided to light some candles. First we tried lighting a few Shabbat Candles, and that worked fine - though they don't have the longest staying power. Then it hit me - I had a couple of extra Yahrzeit Candles lying around. So, we lit them up. They worked great. They are ideal because:

  • They burn for hours (their designed to go for 24)
  • They are self contained, so you don't have to worry about finding a stable candle holder or about leaking wax
  • They are intended to burn all night un-attended
  • They are cheap - you can get them online for about $1.00 each, or we usually get them at the store for like $0.89.

Next time you're at the super market, find the Jewish section (it'll have Matzah, and various forms of powered soup - don't ask me why these are considered essential, all year round items). Somewhere around there should be a nice big candle in a glass. Buy a few and be prepared.

Friday, July 23, 2010

Review: The Art of Travel

The audio version of The Art of Travel by Alain de Botton and I did not get off to a good start. I went into the book having no expectations, and found myself instantly confused.

There were chapters, sections and subsections. There was a modern day story intertwined with that of a historic figure from the 1800's. To make matters worse, the book opens with a depressing discussion about how the act of travel is often a disappointment compared to the anticipation and memory stages of travel.

What the heck. I was disoriented and wondering where this was all going.

Thankfully, I stuck with it. After about 4 stories it finally hit me what was actually going on. de Botton was picking a general aspect of travel (Beauty - Art - Discovery - Nature), a historic figure and a trip he had taken, and then connecting all three of these things. It's actually quite brilliant.

With the model understood, I could sit back and enjoy. I ended up learning not only about interesting historic figures, but about how the author could use their example to find more meaning in his own travel adventures.

More importantly, he's inspired me to try to do the same and given me some tools to do so.

For a book that stared off as a disaster, it sure turned out to be a winner.

Phoneix Bikes - A Bike Shop on a Mission

Tonight, a friend of mine introduced me to Phoneix Bikes, a bike shop she volunteers at. When she explained to me how the setup works, I couldn't believe that I could be so oblivious to such a cool program located in Arlington, just down the street from me.

Phoenix Bikes is a non-profit that trains local youngsters to be bike mechanics. They then turn around and offer discount services to the Arlington biking community.

It's such an obvious win-win -- the students, among other benefits, get to learn new skills and the community gets a bike store they can feel good about.

Here, watch CNN's coverage of the program for a more complete explanation:

I just can't get over what a powerful force for good this program is.

Thursday, July 22, 2010

Twitter as Lightweight Public Database

I was checking out the home page for a new radio station that I've been enjoying, and a note at the bottom of the page caught my eye:

Looking for tracks we played further in the past? Our extended playlist history is available on Twitter.

And sure enough, Twitter shows a record of what they've played:

It occurs to me, that normally this functionality would have been custom built into the site. A programmer would have whipped up a couple of pages that would allow you to browse and search previously played songs. However, by storing this data on Twitter they've realized a number of advantages:

  1. The browsing and searching is automatically taken care of for you
  2. Concerns about storing an infinite stream of data become someone else's problem, versus your company's DBA
  3. Users can subscribe to the stream via RSS, SMS updates or using a custom reader application. All this was done without writing any code.
  4. Twitter lends itself well to sharing (retweeting) the content
  5. The data now lives where users are more likely to look for it. This is the same principle behind selling a book on Amazon, or storing a video on YouTube. Sure, there's some pride in providing this functionality on your site, but you're missing out on reaching a huge community of users who are likely to stumble upon your offering.
  6. Programmers who would have been involved in a custom data storage and browsing solution can now be assigned to more critical tasks.

My the team over at Soma.fm is a creative bunch.

Wednesday, July 21, 2010

Didn't see this one coming: iPad Saves Bookbinder

You've got to love this article in Forbes that talks about how the iPad has given new life to all-but-pronounced dead business of a bookbinder.

The fit, in retrospect is obvious: who wouldn't want to wrap their sexy iPad in an equally sexy hand crafted bookbinded cover?

But still, there was an opportunity there that could have easily been missed.

Makes you wonder how your products, services or craft could be re-purposed for a digital age?

Source: SmartBrief daily e-mail.

Radio Station of the Day: Covers

Joe Cocker signing With a Little Help From My Friends. John Lennon singing Stand By Me. Dixie Chicks signing Landslide. Artists you know, singing someone else's music - that's what's playing over at Covers by Soma.fm. And it's totally delightful.

It's almost as if the artist has to work a little harder to make sure they're honoring the song their essentially signing a tribute to.

It's also been a fun way to appreciate artists or songs I don't usually listen to. For example, I can't typically stand the Cranberries -- but their cover of Go Your Own Way totally works.

Give the station a a listen, you'll be glad you did.

Tuesday, July 20, 2010

Coderless Apps, the Android Version

Lambda-the-ultimate has highlighting App Inventor, a tool for developing Android apps. The claims are impressive to say the least:

You can build just about any app you can imagine with App Inventor. ...

To use App Inventor, you do not need to be a developer. App Inventor requires NO programming knowledge. This is because instead of writing code, you visually design the way the app looks and use blocks to specify the app's behavior.

This is the classic you-can-write-software-without-programming model which comes up every few years, if not more often.

I'm still not buying it.

Programming is a lot like writing in that there are two pretty distinct stages. First, you need to understand basic syntax so you can be understood. In the case of programming, you need to learn where to put all those curly braces or parenthesis, so the computer can parse your code. In the case of writing, you need to learn spelling and punctuation so that people can parse your text.

The second stage involves learning to write or code well. That is, how do you solve a problem, or write a story, in an efficient and elegant manner.

The first stage may seem tricky, but it's really the second stage that one spends years mastering.

To write software, like writing a novel or a blog entry, you're going to have to master both of the above stages to some degree.

I'll give you that App Inventor may make learning the first stage easier. Heck, it may cause the first stage to disappear almost entirely. But the second stage - learning how to problem solve in an efficient manner, that's still going to be required.

I could be cynical, and say that App Inventor is going to be a flop, and that to write software requires learning to think in a new way. Just like learning to write or paint requires a new thinking model as well. But, I'd rather be more optimistic.

If have success with App Inventor, it's not because no programming experience is required. Nope, it's because you've actually become a programmer. Congrats.

Sunday, July 18, 2010

An Arlington Find: The Sprayground

Last Thursday, Shira and I independently learned that a few Arlington county parks contain Spraygrounds. That is, playgrounds with fountains built in, designed for kids to run through them.

Shira and I had the same thought -- man, I should keep this quiet and surprise him/her with this find. Well, on Friday, neither of us could keep the secret any longer. Shira turns to me and says, "did you know that Arlington County..." and I finished "has parks with water fountains kids can run through?"

This weekend was too hot, and the discovery too big, not to give them a shot.

So, this afternoon we made our way to Drew Playground, only a couple miles from our house.

I had expected that on a hot and humid Sunday afternoon, the park would be jammed with kids. But, it turned out, there was only one other family there -- with two boys making the most of the run-through fountains. (Another family or two arrived while we were leaving.)

Our little one took to the whole scene like a fish in water. He's just taking his first few steps on his own, so he was actually able to "walk" around and explore the gushing water by himself a bit. Mix that with me carrying him and doing a bit of crawling, and he really got the whole experience.

And what an experience it was. It was neat watching him try to process all the different ways the water was behaving, and the effects he could have on it. That, and it was wonderfully refreshing.

Put this down as a definite summer find. It's good to see my county tax dollars are going to something truly worthwhile.

Here's what a sprayground looks like:

Friday, July 16, 2010

Doodle.com - The sane way to coordinate events and people

I hand out various honors at my shul, and lately, we've been trying to get better about assigning certain honors before the service starts. For the last couple months, I've been doing this via e-mail. Well, it was time to find a better system, as keeping track of everyone's availability was getting tricky in a hurry.

The fix? Doodle.com. Using Doodle, I was able to make a quick survey asking folks when they planned to be in shul over the next few weeks. They fill in their responses, and then I'm able to coordinate weeks of assignments all at once.

I suppose Doodle is just another example of sending out a survey to users. However, Doodle feels more lightweight, and for asking a single question about availability, it seems to work better than say a Google Form.

If you coordinate meetings, events or people, you've really got to give it a shot.

My first earthquake and I ...

sleep through it! D'oh. According to Arlington Alert:

The US Geological Survey reports an earthquake occurred at 5:04:49am with the epicenter in Gaithersburg. Preliminary reports from USGS said it was 3.6 There has been no reports of damage in Arlington at this time.

Full details here.

Anybody feel it?

Thursday, July 15, 2010

7 Years in the Making, 20 Minutes to Fix

When we moved into our house, years ago, the door to one of the second bedrooms kinda stuck. Over the years, as the house settled, the door just outright stopped closing. The room was typically used for storage, so we never really cared.

Every few years, we'd get the idea to fix it. We'd ask various handy men if they would do the job, and they'd always mention something about taking off the door and sanding it down. We never followed up on the job, cause it just didn't matter.

Well, Shira had enough of it, and told me it was time to fix this sucker. Examining the problem more closely, I realized I didn't need to take the door off the hinges. I just needed to get up there do some sanding.

So, the other day we happened to be near Home Depot and I stopped in. I got a wonderfully helpful clerk, who hooked me up with a $30 finishing sander. I ended up laying down a drop cloth, marking the area to sand with a pencil, and spent 20 minutes or so sanding away.

And voilà! The problem was solved. Now, did I do irreparable damage to the door, and the very structural integrity of the house? Perhaps. But one more item is off my Honey-Do list and I've got a new tool in my repertoire. I'd say this job was a success by any measure.

Oh, and I didn't have any extra parts.

A Dim Memory Comes To Life

If you were to ask me about the oldest movie I could ever recollect seeing, I wouldn't know the name of it, but I would be able to tell you about an action movie where the hero busts out his football moves to take down a room full of bad guys.

Turns out, I didn't make that memory up. In fact, I remembered the scene fairly accurately. It's from Flash Gordon, which came out when I was 4 years old. The scene in question starts 8 minutes into this clip:

It's so eerie to be able to confirm a memory I've had for so many years. Oh YouTube, what would we do without you?

Apparently, you can watch the entire movie in 10 minute blocks. Just start with the first one here.

I rewatched part of it, and my gosh, it's cheesy. But man, that football scene still rocks.

Review: Tales of from the Dad Side

Shira and our Little One gave me the book on CD version of Tales from the Dad Side: Misadventures in Fatherhood, appropriately, as a Father's Day Gift. While I no longer have a work commute, I do get to make morning and afternoon runs to Day Care, so the gift was very much appreciated.

I have to say, I very much enjoyed listening to it. Doocy is a funny man, and he's had more than enough adventures to keep me entertained. Most importantly, you won't want to take the book too seriously, as the author certainly doesn't.

About the only negative thing I can say was that I found Doocy's narration style to be a bit on the goofy side at first. It was almost like he was trying to force the material to be funny, where it wasn't. But, with time, I grew attached to it and now I probably have picked up more mannerisms from him than I'd like to admit.

To Doocy's credit, it wasn't until I was pretty far into the book until I even realized who he was. As he explained, he's the host the most popular cable morning TV show, and also a character who gets skewered on The Daily Show and Colbert nightly. Even when I did learn who he was, I was pleased that his politics never once leaked into the book. Whether your a Fox News devotee, or a Daily Show fan, you'll find this book funny.