Read ebooks hands free


Every year for Christmas I try and make Claudia a Christmas present. Sometimes it's a big success (an old laptop I turned into a digital photoframe that shows local bus positions, bike share station status and more recently streaming video from our baby monitor) and sometimes less so (a fish scale modified to set off a buzzer when pulled too far that was supposed to teach our dog not to pull on the leash). This past Christmas, my wife was pregnant so I decided to build something that would help us get through the late nights of breastfeeding.

Claudia loves to read, and we now buy a lot of digital books, which Claudia reads on an old Kindle and I on my phone. I decided that I wanted to come up with a way that would enable Claudia to read hands free while breastfeeding our baby. Besides Kindles and phones, Amazon also lets you read books on their kindle cloud reader. You just go to http://read.amazon.com, sign in with your kindle account, and all of your books are there and ready to be read.

When you put the browser in full screen mode, it makes good use of the screen. You can adjust the text size and spacing so that it is quite readable, even at a distance. Of course you can click an icon to change the page, but you can also use the right and left arrow keys to flip pages. With all of this in hand, the rest of my solution was pretty obvious.

I really only had to buy two things:

A music stand:



Musician's Gear Heavy-Duty Folding Music Stand Black





A set of foot pedals:




Scythe Usb-2fs-2 USB 2 Foot Switch Version 2


The music stand is adjustable to hold the laptop at eye level, is sturdy and easy to move around. The foot pedals basically work like a keyboard with two keys. I used the included software to configure them so that the right pedal would send the right arrow key, and the left pedal would send the left arrow key.

Needless to say, I was pretty psyched when I plugged it all in, went to the read.amazon.com and everything worked perfectly.

Now that Annika, our little baby girl, has arrived, my wife is using the system around the clock and it seems to be working flawlessly. With the background color set to black, it barely even lights up the room, which is helpful when you are trying to keep the baby in sleep mode.

Ways to improve it

It turns out that having a computer around really helps pass the time for breastfeeding mommies. Besides reading books, she has been watching a lot of movies and TV shows. It would be great if you could program the pedals to send "space" to pause a TV show. If the pedals could switch modes and send the right keys depending on which application had focused - then that would be awesome. Or simply allowing long presses or combo taps (left, right, left, right) to send other keys or key combinations would allow you to also launch new applications. Then she could scroll on websites or browse iPhoto. Maybe I can use voice recognition to do this...

Twitter Strategy for Humans


Another from the Recent Emails I have Sent Department:


The most effective Twitter strategy is to use Twitter personally (as yourself, not as your organization) and engage in (and start new) online discussions about things that you feel strongly about. This includes education strategies, new products and, yes, sometimes even what you had for breakfast. The reason is that twitter is about online community and conversation, sort of like Facebook, but with people (not products or organizations) that you often have never met personally. No one wants to talk to a press release, or a corporate department they want real people (who eat breakfast). It is useful to have a corporate twitter identity, but mostly it’s just as a mechanism for real people to share press releases – the real value add happens in public discussion that everyone can see. Often those online discussions turn into post-conference meetings or drinks when people pass through town, and that is usually when the most important opportunities and discussions happen. One more thing – using Twitter during a conference is a great way to establish thought leadership, get followers, and participate in a discussion that is often much more interesting than what is going on at the front of the room.

[An entirely new strategy will probably be necessary once @horse_ebooks begins reproducing.]

Ode to Coffeescript

(this started as email to a friend but I thought it might be useful to share)

I’ve been using coffeescript for about a year. Other than using it for my own projects, I have learned it's syntax from the coffeescript website and from the random coffeescript snippet that I see here and there.

I started using it to try and write expressive code that reminded me of Ruby. I like my code readable, with very descriptive (and sometimes long) variable names (never abbreviated) and few comments. If I can’t understand the code by reading it, then I probably need to split up my one-liner into a few lines or make a new function or two.

Being able to abandon a lot of the extra braces and parens for indentation helped for readability (I actually agree with Python over Ruby on this one), especially relative to the javascript that I was writing before.

Initially I used all of the looping shortcuts that coffeescript comes with, but now I tend to use underscore.js whenever I am looping/mapping/etc. I am not sure if this is what @jashkenas had in mind (did this guy really write coffeescript, underscore and backbone??) but I think coffeescript + underscore results in a really nice compromise.

I have only recently really understood that everything is an expression in coffeescript. Using it really helps me to modularize my code

Here’s an example I have just written that sort of sums up what I like about coffeescript:



Line 1. Takes advantage of "everything is an expression". Whatever the block indented below line 1 returns, will be set to formElement. This is so much better than initializing an empty string and then setting it.

Line 2. Note that I am using underscore to check if the value I am interested in is in an array. If so, then line 3 just returns the screen which bubble back to line 1. Same thing with line 4-5.

Line 7. See how we can do ruby style string interpolation. That is huge - so huge. Javascript doesn't let you do sane multi-line strings, nor can you interpolate. But wait - check out the crazy interpolation of line 8 - I start a multi-line map (underscore again!). Coffeescript basically enables quick and dirty templating inside any string. It's a bit dangerous to mix too much logic and templating, but for small things it is awesome. (I use handlebars.js for the big jobs)

Anyways, it's not the greatest code in the world, but it's real code I wrote yesterday and it's helping me get the job done.

I am one of those people that think you should learn a new programming language every year or so – and indeed coffeescript has made me a better programmer. So if you are learning it, I recommend that you stick with it. You’ll get it and be better for it.

Fall blooms and dies over a few weeks


Skateistan: To Live and Skate Kabul

Memories

Operation Say Yes

It was ten years ago today that I asked Claudia to marry me. The intervening years have far surpassed all expectations of partnership, meaning, growth, adventure and plain old love than even the best Hollywood romance or English novel could inspire.

Here is how I recorded the events of that day:

On Sunday March 25, I was supposed to go with Claudia's family on my favorite hike in Southern California. But wouldn't you know just as we were pulling out of the driveway, my cell phone rang, it was work complaining that my code broke the latest build, and I needed to come in right away. Damn - I told the family to go on the hike without me - maybe I could catch up later. Claudia (my girlfriend) goes on the hike totally upset that I didn't go because I was basically the only reason she was going (she has been unbelievably busy writing and sending off applications for business school in Europe). In the meantime there was a shady looking character a few houses up from Claudia's parents' house sitting on the sidewalk with his hat pulled low, cellphone in his hand. I jumped in my car to head off to work but instead I doubled back and picked up the hoodlum (my brother Darren). We raced to the nearest gas station where the other members of Operation Say Yes were stationed. The game was afoot and we took off towards the hills past Malibu about an hour away. Meanwhile, Claudia's family made a well planned pit stop that puts Operation Say Yes ahead of them by about 45 minutes.

As soon as Team OSY arrived at La Jolla Canyon the group sprung into action packing gourmet food, bouquets of flowers, a table, coolers, chairs, a guitar, a computer, some speakers and more. Knowing that the von der Ohe family was hot on the trail they double timed it up 3 miles or so of steep and narrow terrain. Heroic efforts were par for the day, but my sherpa friends could have brought the mountain to downtown Los Angeles that day. With sweat pouring they came over a ridge and looked onto a green valley sprinkled with wildflowers and oak trees next to a flowing creek. I went on ahead hoping that I would find a nice place to set the stage for the evening's activities. The first overgrown offshoot trail that I took led to a green meadow that fell off into the creek with one beautiful oak tree in the middle. I am not exaggerating when I say that there were golden streams of light filtered by a misty fog coming from the sun that was right on top of the mountain illuminating the spot. The place literally glowed and I knew I had found the spot.

The team arrived and we set up a table, the chairs, tablecloth, candles, and a dozen roses as the centerpiece. Sean, our scout, ran back to find my girlfriend's family and hurried back with the news that we had maybe 5-10 minutes tops until they arrived. I took a bag of rosepetals and lined the trail for about 50 yards with the dark red flowers. I also strategically placed a couple of poems along the trail - one that included a hint of what was to come. I ran back, hid some speakers in the old oak tree and set up my computer to start playing a selection from Claudia's favorite Opera: La Traviata. I changed into a tie and sportjacket as Darren went back on the trail with flowers for Claudia's mom and sisters and to retrieve the true centerpiece of the evening - Claudia. Darren found Claudia - and brought her towards the spot - but first escorted her to a place where a nice dress and sweater were hanging for her to change into. After changing and looking magnificent, Claudia took Darren's arm and he led her to the spot. A gourmet meal ensued with my friend Jeff moonlighting as our server. We had incredible homecooked Italian food and Claudia's favorite Cheesecake from the Cheesecake Factory for dessert. It was the most romantic and beautiful dinner ever. I played the guitar and sang a nervous rendition of "It's Your Love". I got down on my knee, took out a basin full of water and rosepetals and washed Claudia's feet promising to be her servant for life. Then I asked The Question. Suffice to say that Operation Say Yes was a success. We then laughed and ran and walked and kissed and hugged our way all the way down the mountain . . .