Monday, January 02, 2012

2011 in Books

The new yearly post. This was not a good year for reading, but I did get in a lot more writing!

Books Read: 12
Pages Read: 6080
Average Pages/Day: 16.7

Favorite Books: 1Q84, Triumph of the City


Sunday, January 02, 2011

2010 in Books

The yearly post. This year's totals:

Books Read: 32
Pages Read: 14,286
Avg. Pages/Day: 39.1

Favorite Books: Stones Into Schools, Zeitoun, and The Girl with the Dragon Tattoo


Tuesday, September 07, 2010

Android International Data Roaming

A note to those traveling with Android phones. Even though you're roaming, your phone might not think it is. I don't really understand why this is the case, but there are at least a few carriers in Sweden (like 3) that a Motorola CLIQ with a T-Mobile US SIM card thinks are not roaming.

In these cases, just un-clicking the "Enable data when roaming" box doesn't help and any time your phone lands on one of these carriers, it'll go mad syncing all of your accounts and using lots of data. In order to prevent this, you have to go in and manually delete the T-Mobile APN in the data settings or it will keep attaching. Luckily I figured this out soon into my trip and just 2MB were used ($30). It could have been *much* worse.


Wednesday, July 07, 2010

Sensor Glove

A friend of mine gave me a neat idea a few weeks ago. She has rheumatoid arthritis and often feels that there are various correlations between her joint temperatures and external conditions like temperature, humidity, or time of day. And understanding these correlations can lead to better management of the condition. She had an awesome idea for a glove that could record and log all of this. I realized that with some things I had learned from working with Leah Buechley's class this past semester, I could make one!

So the basic idea is that there is a temperature sensor (or more than one) in a glove that measures surface joint temperature. It relays this information over Bluetooth to a phone which records the data along with the time, external temperature, and humidity from the Google weather API. All of this data gets logged in a CSV file for later inspection and analysis in front of a computer.

The work proceeded along several prototypes of increasing fidelity. The first was done on a dev board using an Arduino Duemilanove and a BlueSMiRF Bluetooth module. I used the Amarino toolkit that Bonifaz Kaufmann put together in order to interface the Arduino board to the phone and started with his SensorGraph example as a base for the code on both the Arduino and the phone. The phone is a Motorola CLIQ running Android 2.1 and Amarino 2.0.

A few things needed to be updated to get the first version working. On the Amarino side, the serial connection speed had to be changed to 9600 baud and logic was added to compute the temperature in degrees F from the analog value received from the sensor. I changed the update frequency to once every 10 seconds and also added some code to flash the LED that's built into the Arduino so that I knew when the sensor value was being sent.

On the Android side, I updated the Sensor Graph application to be able to plot float values and to plot on a scale from 0-100 instead of 1024. Since the application hard codes the device ID, that needed to be updated as well.

A little bit of testing was done to make sure all was working properly. The phone was successfully reading the ambient temperature of the room and when I touched my fingers around the sensor, I was consistently getting readings in the high 80s. That was enough to satisfy me, so I went on to prototype 2.

Prototype 2 added logging on the phone and brought the sensor out to an actual glove. A few extra pieces of code had to be written on the Android side. First, I wrote a simple class that interfaced to Google Weather. It allowed for the zip code to be sent or for the phone to use it's current location to get the zip code. It would then ping the Google Weather API and get the current temperature and humidity. I also extended a logging class from here to support logging the time, temp, outside temp, and humidity data onto the SD card. A new file is created each time the application starts and gets named with the current time.

The glove itself is just an old knit winter glove that I had around. The knit-ness made it easy to shove the temperature sensor into it. I clipped on some alligator leads to the existing wires from the Arduino and now I really had a temperature sensing glove! For this version, nothing changed on the Arduino, but there was a bunch of updated code for Android.

This version produced CSV files with lines in the format of time, sensor temp, outside temp, humidity like this:
07/07/2010 08:33:54,75.59,80,75

With the concept more or less proven and the software on both the Adruino and Android sides fairly final, the last step was to make something that was actually wearable. This involved moving from the Duemilanove to the Lilypad and from wire to conductive thread.

The first step was to move the code over to the lilypad, which was just a change in settings in the Arduino app. With a few jumper cables, a quick check showed that everything was working.

Then came the sewing onto a real glove. We had a few gloves that were potential candidates. We threw away the super stretchy one and tried a more or less standard knit one. It still had a little stretch in it, but not much. With some quick work, everything was sewn into place, however when we turned it on there was a short someplace and it wasn't working properly. Two things made it quite difficult to debug this. First, the glove that we were using was close to the same color as the thread, so it was really hard to see any loose ends or places where threads might be touching. (this made it look really cool though since you couldn't seen any of the "wires" connecting everything together) Second, I didn't have my multi-meter with me, so it was really hard to figure out exactly where the problem was. In the end, we couldn't figure it out and just cut off the components to try on another glove.

With the learnings from the failed attempt the night before, I set out to make a new glove. Since it seemed like the stretchiness of the glove was causing some of the threads to push up against each other and short out, I decided that it would be easier of the wiring was done on another plane from the glove. I cut up an old t-shirt and decided that it would be a perfect surface for this. First, I could draw out my desired sewing paths with pencil ahead of time. Second, it wouldn't stretch nearly as much as the glove material would. And third, I could sandwich the bottom of it so nothing on the glove could interfere with the threads causing a short. So that's what I did and it all came together quite nicely. For someone who hasn't sewn anything since junior high home ec class, I was able to get it all done in about 2 hours. At the end of those two hours, here was the result:

It was fully functional and just needed a little cleaning up. With a little trimming and some fabric tape, here's the "final" glove in action:

We'll probably make one more iteration that's a little more robust. Maybe stiffer material than t-shirt and some snaps to attach it to the glove. The hope is that the electronics will last longer than the glove and can be transferred over to new ones as time goes on. We'll need a connector of some sort for the temperature sensor, but that should be pretty easy. I'll update this post when that happens with another picture.

Overall, I'm really happy with how this came out. Could I have made it look prettier? Sure. And that will be the next step. But I was able to learn a lot about the practical details of putting something like this together and hopefully have made something useful for a friend. I'm looking forward to getting some feedback and new ideas this week at the Engaging Health workshop at the Media Lab that Leah and Roz are hosting.


Sunday, April 18, 2010


For the past week I was down in Atlanta for CHI 2010, the big human computer interaction conference from the ACM. It was a great time as always and so good to catch up with a ton of old friends and meet some new ones. I was in a workshop on Senior-Friendly Technologies: Interaction Design for the Elderly on Saturday where I was talking about our recent study on communicating across generations and distance. During the workshop, I was also on a panel about the future of interaction for the elderly where I talked about the role of ambient devices in connecting people across distances with simple interaction and little configuration/setup. I also had a talk during the main conference on how we created Contacts 3.0, the reference design for the phone book service in MotoBLUR. The talk went really well and we even had a bunch of phones for the audience to play with after the talk.

So as I do every year, here's my annual list of the best/most interesting of the conference:

Skinput - A system from CMU and MSR that turns your skin into an input surface without cameras. A series of sensors placed on your upper arm are each tuned to a different set of frequencies and you can tap different places on your arm/hand and it can figure out where you touched.

Spyn - An awesome system from Berkeley that correlates media from your surroundings while making a craft to the object using your android phone. And then when you gift it, they get all of this rich contextual media about the creation of the object.

Contactless Power Sensor - UW's system to determine how much power your house is using from the fuse box without needing to touch any wires or even take the cover off of the box.

Happy Coincidences - A Japanese paper of a system that plays a chime when you and a remote person both do the same thing at the same time (sit on the couch, change to the same TV program, open the door/window). Really neat.

Newport - UC Irvine and MSR's system to share media from your computer while in a phone call. Sort of like Motorola's Push To View from iDEN phones but linked up to your computer where you might have a whole lot more media to share.

Who's Hogging the Bandwidth - Georgia Tech and MSR's ambient display of bandwidth usage in the home, with sliders to limit certain peoples' bandwidth if you want to throttle them down. Caused a lot of debate and discussion!

Where Should I Turn - A collaboration between CMU, Northwestern, and GM looking at how people navigate in cars with real people of different relations (Mother and son, couple, strangers). Interesting differences between spoken navigation commands.


Tuesday, February 16, 2010

Measuring the Speed of Light

I saw this Wired article this morning and thought it would make for a fun little experiment. Basically they claimed that with chocolate and a microwave, you could calculate the speed of light. Sounded right up my alley! I emailed my friend Alison about it and she said that she had done the same thing with marshmallows, so of course that was added to the list of things to try as well.

After work, I made a quick trip to Whole Foods for the necessary supplies. A bag of 365 brand Dark Chocolate Mini Chunks and some Sweet and Sara vegan marshmallows were procured.

I started with the chocolate as I figured that had the best chance for success. I arranged a grid of the chocolate chunks on a plate and stuck them in the microwave (after removing the turntable and placing a saucer on the spinning part under the turntable).

I let them go for about 30 seconds and got a nice pattern with four areas melting a bit. With a ruler, I measured about 6.3 cm between dark spots. Using a little math from the wired site: 6.3 cm * 2 * 2.45x10^9 Hz = 3.087x10^8 m/s which is pretty darn close to 3.0x10^8!

Next up were the marshmallows! I arranged a nice little grid on another plate and put them in for the same 35 seconds. I had never used these vegan marshmallows before, so I wasn't sure if they'd even melt like "normal" ones do.

Sure enough, they did! And I saw pretty much the same pattern as with the chocolate! This time it was about 6.5cm between gooey spots leading to: 6.5 cm * 2 * 2.45x10^9 Hz = 3.185x10^8 m/s which is a little farther off, but still within 6% of the right answer. Not bad for some sweets in the microwave!

But of course I couldn't leave it there! I had melted chocolate and marshmallows! So I really did have to make some smores for dessert! They were as tasty as they look! I highly recommend trying this at home!


Tuesday, January 19, 2010

Disney Half Marathon Race Report!

Last weekend, I made it down to FL to run the Disney Half Marathon! Last year after I ran the full marathon down there, Alison and I decided to go for the half this year, and I must admit it was much easier to train for this one!

So last year on the same weekend, it was in the 80s and sunny. This year, not so much. The forecast called for low-30s and sleet/snow. So we woke up at 3am so that we could be on the bus to the start by 3:45 (you have to be on your way by 4am as they close the roads down). We put on every article of clothing that we had with so that we could at least stay warm before heading through gear check. While waiting for the race, I had on:

Short sleeve running shirt
Long sleeve running shirt
Hooded running jacket
Hooded sweatshirt
Running shorts
Running pants

And I was actually pretty warm...or at least not frozen. Then it was time to head through gear check and walk the 1/2 mile to the starting line. While it was starting to snow a little, I checked the sweatshirt, hat, and gloves but added a plastic garbage bag to help keep in the warmth. (BTW, these totally work! Some may doubt it, but not after they tried it!!) The gear check line was super-long, but in traditional Disney fashion it moved along really quickly. I also decided to run this race without music, which I've been doing more of lately and really liking it. And as I had some pockets in my running shirt, I threw in a disposable camera that came in my race bag (which is where most of these pictures are coming from).

The walk out to the start was long, but since it started in the same place as the marathon did, I knew the route this time. We made it to the start corrals with about 20 minutes to spare and stood under a bridge to try to stay out of the wind. Yes, you can try to picture all of the garbage bag clad runners huddling under the bridge for warmth :) With about 10 minutes to go, we split into our respective corrals and got ready to go!

As usual, the race started with some fireworks and wave 1 was off. I was starting in wave 2, and now that I had my garbage bag off was counting down the minutes. Ten minutes later, we were on our way with some more fireworks!

I started off with a good pace of about 9:30, which I was hoping to keep up for the whole race if I could. The weather for the first few miles wasn't so bad. It was cold and a bit windy, but the snow had stopped. I ran past the first water stop at mile 2 and turned onto the road to the Magic Kingdom. As we approached the parking lot, there was a little change to the course this year and we were able to run right through the toll booths which was definitely fun!

From there, we ran around the lake to the East and under the water tunnel by the Contemporary. I remember the uphill after this tunnel being harder last year for the marathon, but my legs were still feeling great at this point as I came up the other side, still at about a 9:30 pace.

The course then made its way into the Magic Kingdom through a side entrance by Main Street. They still had the Christmas Tree up and we ran around that and towards the castle. At the end of Main Street, we turned toward Tomorrowland and ran back to Dumbo and then through the castle and back around to Splash Mountain where we went out a back exit of the park. There was a train parked there and he blew the horn as everyone walked by, scaring quite a few people! As we exited the park, we ran past some floats from the Halloween parade I had seen a few months ago which got the Boo To You song stuck in my head for the next 6 miles. (Maybe I should have run with music!).

At this point, it was Mile 7, and it started to sleet. A super cold, wet sleet that totally soaked my running jacket and added several pounds to the arms I had to move with every step. And it kept sleeting for the next 6 miles. I knew I was slowing down, and knew I was taking longer at the water stops. But there wasn't much I could do about it. I just couldn't keep up the pace I had set before while being soaking wet and running in heavier winds and sleet.

As I made my way to Mile 10, I saw that the course designers were not being nice to us. Between miles 10 and 12, there were two big bridges. Running up the first, which was a 1/2 mile long exit ramp, I could not wait to reach the top. It felt like it was going up and up forever. But then I made it up and realized that running uphill was probably better than the crazy winds that were blowing up there! But I continued on. The bridge just before Mile 12 was a bit steeper and I sort of walk-ran up it as I was just getting exhausted from running in my soaking-wet clothes.

Mile 12 was a fun run through Epcot (except for the giant puddles everywhere!). But I made it around and through the exit chute to the finish just a few minutes short of my original goal. I finished with a time of 2:16:00. When I started, I was hoping for 2:13:00 or less, so given the conditions, it wasn't that bad. And I feel like I can totally break my 2:06:29 record at Sonoma this spring!

It was still sleeting a bit after the race, which made it super cold while getting food and heading back through gear check. I almost could not move my fingers to put on my gloves as I made my way to the reunite area to wait for Alison. And man, was that the coldest 15 minutes that I can remember! As soon as Alison came, we quickly made our way to the nice warm bus back to the hotel! At least Disney does logistics really well, and there were plenty of buses waiting right next to the finish area.

After some warm showers and sitting next to the heater for a while, we were ready to head to the parks. We donned our warmest winter wear and made our way to the Magic Kingdom. It was certainly a cold afternoon and evening there, but definitely lots of fun! There were almost no lines and we got on everything we wanted to ride at least once (including 3 rides on Space Mountain!). The goal of the day was staying warm, so I got to see a bunch of attractions I usually miss including the Carousel of Progress and the Hall of Presidents (Obama was awesome!!). With some tea and hot chocolate in hand, we took in the fireworks show and then ran off to Pirates where it was warm (it is the Caribbean!).

All in all, a very fun weekend! It was definitely cold, but definitely memorable!


Wednesday, December 30, 2009

2009 in Books...

As usual, here's 2009 in books read...

# of books read: 30
total pages read: 9475
avg. pages/day: 25.9

top three books: the lightning thief, my stroke of insight, predictably irrational


Monday, November 23, 2009

Where I've Been

I've been pretty busy these past few months. October was pretty much devoted to travel with trips to Boston (x2), Beijing, Disney World, and London. It was all tons of fun but it was really nice to get back and be able to relax a little. Between all of those trips, I was never home for more than 18 hours which was a bit much, even for me!

The Boston trips were fun and included a Red Sox game with Dawn, a visit to the Media Lab sponsor week, good food at Wagamana and Brown Sugar, and lots of fun visiting friends. Then it was off to Beijing for ACM Multimedia and hanging out with old Yahoo Berkeley friends. It was amazing to see how much the city has changed in the past 4 years. The subway even goes all the way to the Summer Palace now which is amazing considering that there were only three lines last time. It was a great time with a few days of sightseeing and then the conference. I presented our work on TuVista which was a fun talk to give.

From Beijing, I made my way down to FL to run the Tower of Terror 13k race with Alison! I was not feeling well at all and might have been still trying to get over a case of the swine flu, but I felt ok enough to start running and made it all the way through. I have no idea how I found the energy to make it to the finish line, but I did! Maybe it was the thought of MGM staying open until 2am for the runners and running around with Alison riding Star Tours and the Toy Story ride all night that did it :) The Toy Story ride was especially awesome...I really can't wait for the Wii game! The next day we met up with one of Alison's friends and went to Mickey's Not So Scary Halloween Party at the Magic Kingdom. Space Mountain was still closed, but we had a blast! Including getting vegan ice cream from the ice cream parlor on Main St. I love Disney :)

I though I'd be heading home from FL, but instead I ended up going out to London. It was a quick 2 day work trip, but still super exhausting. After the 13 hour ride home from China in Economy, the 9 hours trip to London was really not fun. At least I got a trip to Brick Lane for diner one night!

These past few weeks have been really busy as well with a trip to the opera, a play in the city, and lots of catching up at work. Hopefully things have calmed down a bit and the rest of the year shouldn't be so bad.

All of that is just a bit about why I haven't been writing much on here lately. I hope to have a few posts coming soon including one about some of the awesome things on the new Cliq phone and another on some Arduino programming/building I've been doing lately.

Have a great Thanksgiving everyone!


Thursday, November 12, 2009

A Mac User's Guide to the Motorola Cliq

I'll have a post soon where I gush about how amazing the Cliq phone is. But this post is pure utility. If you're a mac user and want to get up and running on a new Cliq, here's what I've found to get all of your data moved over. Note that if you're on a PC, there's a really awesome tool called MediaLink that will get you all synced up.

I'll also state here that I do work for Motorola and that "The postings on this site are my own and do not necessarily represent Motorola's positions, strategies, or opinions." OK, legal stuff out of the way, here goes...


So you have your contacts in mac address book, and you need to get them onto your brand new Cliq. There's really no straightforward way to do this since the device doesn't officially sync on the mac. You'll need to export your contacts as a vCard (This is a little trickier than it should be. Go into Address Book, and select all of your contacts, then export as vCard. This will make a single file with all of your contacts). You can then upload this vCard file to whichever service you'll be syncing with your new phone (Google Contacts/Mail, Yahoo Address Book/Mail, an Exchange account, etc.). Then just add that account on the Cliq and all of your contact information will come streaming into your address book. Added bonus: if you modify any of your contacts online, the changes will get synced automatically to the phone, and vice versa.

This isn't particularly mac-related, but once you add a few services on the phone, you might find some contacts that were not automatically merged together. To merge (aka Link) contacts together, go to a contact detail page in the phonebook and press the menu key. One of the options will be to Link, then pick the contact you want to merge with and everything will come together into one. It's really simple, but I didn't think to press the menu key, so I didn't see how to do this right away.

Music and Photos

First, get a bigger Micro SD card. The phone comes with 2GB, but you can pick up a 16GB card from Amazon for $40. Second, the phone doesn't sync directly with iTunes. But your good friend DoubleTwist can save you. It pulls music and playlists out of iTunes and photos out of iPhoto and lets you sync these with a phone (Blackberry, Android, Palm, etc.). It's a nice utility and fairly self explanatory. Make sure you've removed any Apple DRM from older music from the iTunes store. iTunes Plus lets you do this, but I've found doesn't always get you the version of the song you bought in the first place, so be careful with this route.


The default music player on the Cliq doesn't handle podcasts. So the step with DoubleTwist above will not bring in RSS feeds for podcasts that you want updated. It's ok though. Google has a free app called Listen that you can get from the Android Marketplace. In this app, you can specify all of the podcasts that you want synced to the device. After you've done this, be sure to go into settings and make sure it will automatically download new episodes, and that it will do this over 3G as well as wifi.

I think that's about it. If I think of anything else that I had issues syncing, I'll update this post. And there will definitely be a post coming soon about the awesomeness of the Cliq and MOTOBLUR in general :)