Using Tech to Enhance Remote Experiences

Google HangoutsIn an earlier post, I mentioned that, to me, one of the main benefits of tech is to “to inspire users to create and share ideas and enhance the overall experience of learning and growing as human beings”.   This is the first of hopefully a number of posts providing suggestions/examples of how we could do that (as opposed to play with the latest toys/features of software and hardware or browse social network streams until we drop).

One of the most essential needs for humans is the good company of family and friends.   While we all also need isolation and time for reflection, the need for spending quality time with family and friends will never go away, and I have found that just being around this kind of company makes me happier and more productive.

Experiencing family and friends in person is great, but because of job opportunities or travel we are often forced to communicate remotely.   What I have found is that this kind of communication is mostly ‘active’ with the exception of chat which is usually very passive.   The problem with ‘active’ communication (e.g. phone or video chat) is that a constant stream of attention is required.  I think this is what leads people to say “I’m not really a phone person”, for instance: the desire to avoid awkward pauses or moments when there’s not much content when the medium of communication sort of ‘demands’ a more active form of communication.

But when we are ‘hanging out’ with our family and friends in person, such an active form of communication is not expected of us.   For example, when you are at home with the family it’s perfectly natural for different members of the family to be reading, doing homework, etc. with the occasional interruption to share a thought or to eat.   I believe that it is exactly this more relaxed form of communication that creates an atmosphere of comfort and openness to share ideas and fun experiences.

There’s no reason that we can’t use phone and video chat to experience a more passive, potentially more inspiring form of communication.   One of the best experiences I had shortly after graduating college was sharing a video chat while watching Arrested Development episodes with a friend remotely.   We didn’t just watch the show.   We spoke as if we were in the same room together and it was so fun that I still remember it fondly many years later.

It’s a little odd: you have to get all parties to agree to leave their video/audio chat open while you cook/share a meal for example.   It’s not the norm, but I think doing more of this passive communication with family and friends would be a great use of tech that already exists: especially since we don’t have to pay by the minute anymore!


Think Before You Tech

First, this blog has been revived!   The last post before the Nexus 7 Experience was a long time ago.   Since then, I have become a Ph.D candidate, transferred from University of Maryland to Carnegie Mellon, and made a web page summarizing some of the work at my recently re-acquired domain.  At first I was thinking of moving my blog over to Weebly which is what I used to host the web page. (I decided not to hand-code my web page this time and it was so much faster to get the design I wanted.)   I decided to stick with WordPress because I think they do a really good job of distributing posts to a larger audience and I have had a number of useful interactions on their platform.

To inaugurate this second coming, I wanted to mention something more philosophical that has been on my mind lately, and that’s the role of tech and gadgets in our lives.  I occasionally post on various social media effusing my excitement on new gadgets or technologies.   Are these just my toys?  Short answer: YES! I enjoy playing with new tech toys.  This being said, I believe it’s important to emphasize a “think first” approach to new technologies.  Social networks like Facebook and Twitter are great: and new devices can make it that much easier to access all the new news feeds and information. But these feeds can also be thoughtless diversions from valuable human experiences: sharing a great conversation with someone, helping others out, and as someone I know pointed out recently on a private G+ conversation: even doing basic chores like vacuuming (this was in reference to an automatic iRobot cleaner)!

For me, the benefit of new technologies is to inspire users to create and share ideas and enhance the overall experience of learning and growing as human beings.  Another benefit is to reduce needless suffering in the world (e.g. lack of shelter, hunger).    I appreciate when big companies like Apple and Google focus on enhanced experiences as opposed to introducing just another new technology.  For example, the recent Google Plus keynote hinted at this a little when Vic Gundotra gave the example of capturing a special moment with his children.   I think we are just scraping the surface here.    In the future, when I talk about my experiences with technologies and products, I will try to focus even more on the aspects I mentioned at the beginning of the paragraph.

Scala is pretty awesome

After hearing about it a lot, I have started using Scala recently and am finding it really fun and powerful to use.  Scalala is a nice analog to numpy.  The documentation needs to get better, but I think it’s coming along.

I just found a good introductory video by the creator of the language, and if you’re curious whether this is a language you’re interested in playing with, I think it is a good place to start:

Grabbing individual colors from color maps in matplotlib

Want an individual color from a color map in matplotlib?  You would think this would be easy (and it is as you will see below), but as I traversed the documentation, I could not find for the life of me how to do this.  After looking at various matplotlib functions, Rob and I finally found that it’s really simple (and apparently undocumented as far as we can tell).  Just choose your colormap (e.g. ‘jet’) and call it like a function with a value between 0 and 1: e.g.  This will return you the rgba 4-tuple that you can use for whatever.

Reclaiming your second monitor in OS X Lion

Upgraded to Lion?  Use dual monitors?  Notice the full screen problem?  My lab mate Rob and I found an interesting hack.

  1. Open an application in full screen mode (e.g. Terminal)
  2. Use three fingers on the trackpad and move slightly to the right or left so you are transitioning into the respective space (the ‘transition position’). Hold this position.
  3. While maintaining the transition position, launch another application.  For example, use spotlight to launch TextEdit by pressing the apple key + space and search for TextEdit. Choose it, and press enter.
  4. Still holding the transition position, wait until your application loads.
  5. Let go of the transition position by lifting your three fingers.

I stumbled across this by accident while trying to open system preferences when in full screen mode as you can see in the attached picture.

Now your second screen is not a paperweight 🙂

R and Python (RPy2): Rank-revealing QR Decomposition

I used to use R all the time until I got into Python, NumPy, and SciPy.

In general, however, R has much more sophisticated packages for statistics (I don’t think there’s too much argument here).  Unfortunately, R, in my opinion, is a cumbersome language for string manipulations or more general programming (though it is fairly capable).

You can get the best of both worlds with RPy.

I recently wanted to calculate the rank of a matrix via a QR decomposition as an alternative to computing the SVD.  I haven’t yet seen code to do this in numpy.  R, on the other hand, computes this automatically in its ‘qr’ function.  To get this running in my numpy/scipy code, I didn’t even have to worry much about matrix format conversions between the languages.   After a couple of ‘imports’ and within 5 minutes I calculated the rank in Python via the R code:

rqr = robjects.r[‘qr’]
print rqr(R)[1][0]