Google Voice Potential: Phone Forwarding Based on Location

November 3, 2009 at 3:36 pm (digitalLife) (, , , , )

I’m a self-professed Google Fanboy, and for good reason. I count on Google to push the envelope where others have failed to do so and expect consumers like me to benefit tremendously from it. Google Voice is one of the latest examples of that.

As is usually the case though, in order to really appreciate Google’s products, you must have an eye on the product’s potential beyond what’s first released, not to mention an understanding of the technical, social, and even political brilliance.  In the case of Google Voice, there are definitely some rough edges, but I’m looking forward to having unprecedented controls and capabilities for my telecom experience.  And when I finally buy into Android (this weekend’s launch of the Droid might well be that time), the integrated experience will take the control and capability to the next level.

One problem I’d like to solve using Google Voice is that of having calls forwarded to my home phone only when I am actually there.  Since I don’t really want my two year old answering my business calls, and not to mention it’s pointless to ring that number when I’m not even around, I’d like to find a way to register/unregister my home number as a forwarding option depending on whether I’m actually there.

A solution to this problem would only have a few moving parts.  First off, you need some way to trigger the events that indicate the equivalent of: “honey, I’m home” and “I’ll see you later.”  Then you need a way to take some action based on that event to say the equivalent of: “while I’m home, you can reach me on this phone.”

If not for the awesome ecosystem of open source and the power of Google search, I would have said the hardest part of this equation is the first part.  But these days, no matter what your platform, there is likely a bluetooth proximity solution that you can set-up to kick off some sort of script based on the strength of your bluetooth signal from your phone to your computer.  Eg. in the Fedora 11 repo, there’s a package named BlueProximity which is geared towards locking your screen based on proximity, but I think you can use it to put in arbitrary commands beyond screen locking as well.  There are also plenty of blog posts explaining how to write manual scripts and what not, and I’m guessing plenty of other solutions would do (eg. for wifi phones, try to repeatedly ping you phone if it keeps a consistent name or IP, or maybe a GPS-based solution combined with ).

But with the first part being easy enough to figure out, what can we do about the register/unregister problem?  We need an API!  This is something you can usually count on Google to provide, and I’m sure they will provide one eventually for Google Voice.  When an API starts to ship for Google Voice, we’ll really start to see how disruptive of a force this service is.

gvoice-xhrIn the meantime, we’ll inspect what the browser is spitting out when we make the change in the GUI.  Click the screenshot for a look (forgive the over-zealous smudging) to see the somewhat restful api in use (with an oddly RPCish URI IMHO, but that doesn’t really matter too much).  The call has the following important attributes when I toggle forwarding to my Home phone:

  1. URL - https://www.google.com/voice/settings/editDefaultForwarding/
  2. Form Data – phoneId:2
  3. Form Data - enabled:0
  4. Form Data – _rnr_se:$some kind of hash/token$
  5. Response – {“ok”:true}

Most of that is pretty self-explanatory.  The obvious question mark is the _rnr_se token, but I found it to be the same on every request even after re-logging in, so you might be able to use it intact.

I set about trying to script the call to Google, but I’ve never written a script to use Google’s APIs and I started getting hit with Captcha requests pretty quickly. That was enough to remind me I have some real work to get back to. Hopefully I can find some time to turn this vapor ware into a reality or somebody else can carry the ball forward.

Also, keep in mind there is an obvious problem with this set-up.  For example, if your phone battery happens to die, you get the double wammy of losing two “extensions” to your Google Voice number since the proximity sensing would think you left the building.  But this would be a fun little hack none-the-less.  Hopefully I can get it going and try it out.

Permalink 1 Comment

My Cloud

February 9, 2008 at 2:24 pm (digitalLife)

I don’t want to worry much about my digital stuff. One of the reasons it’s all digital in the first place is for ease-of-use. Unfortunately, if I wasn’t making sure those files would be safe in case of disaster, theft, or just an accident, I would end up regretting it. On top of that, I can’t access the stuff I need sometimes, even within my own home on the several different computers. Mind you, I’m a software engineer – I can set-up network shares like I have been doing for years, but I’m tired of all that. This is especially true when I’m dealing with my Windows and Linux machines (and probably a Mac too soon).

What I want is a permanent home in the cloud, and I want to hook into that cloud with about one click. I want that cloud to be highly available (that’s IT jargon for “always there, no matter what”), but I don’t really want to pay anything (after-all, I do already have a bunch of machines laying around that cost money). I want every file to have at least two copies and for those copies to reside in more than one location. I want access to all my files everywhere, from every machine. I don’t want to have to even think of “backing stuff up” – that should be done for me.

I think the solution here hinges on a few different things:

  1. The cloud is all of your filesystem space wherever you have it.
  2. Thin client software that hooks into the native filesystem of the machine being used and runs a control in a “task tray” or maybe a widget. Possibly utilizing something similar to libfuse in order to make remote files look local. The control would probably end-up with a few different features, but most important would be conflict notification and resolution.
  3. Automatic version control using something like mercurial (I would have said subversion, but my requirements are for a distributed model as opposed to centralized) that constantly sends your updates to the cloud (even at the frequency of auto-save in certain cases, but usually just at save time).
  4. A peer-to-peer buddy system for your back-ups. In other words, if you allocate that extra hard drive space to the cloud, you will get that much space out on the cloud (somebody else’s space) to back-up your files. I’m not sure the donated space would be able to actually be one-to-one because the files would have to be replicated to more than one buddy for reliability reasons, so maybe you would get half or one-third the space that you donate. If need be, you could hook into a paid service (either for the P2P-style sharing or for traditional centralized file sharing).
  5. Specialized “syncing” for services such as flickr, gDocs, youtube, facebook, etc. Some easy, possibly filesystem-based way, to indicate which of my things I want to “publish” to various services. I wonder if dataportability has anything to offer here?

That fourth point there needs some work. There are serious reliability issues and the efficiency of P2P isn’t all that wonderful when you are talking about files that are only in a few places. The fifth point is also icing on the cake, so I could live without it for now.

I guess the question is, can libfuse(?) + mercurial + xmpp + some python rig something like this up? By the way open source is awesome.

Does anybody know of some apps out there that already do this? I did try out that PowerFolders app, but it was a bit clunky and I could never get it working, although it had several of the right ideas. When is google or amazon going to come out with this app for me? With how large and important my digital stuff has become (especially family photos and videos), I think this is worth around $10/a month to me (err… maybe less).

By the way, somebody is domain squatting on mycloud.com right now, and I’m sure writing this blog post will make the domain even more expensive, but oh well!

Permalink Leave a Comment

More Synching Requirements & an Open Source App Named PowerFolder

August 10, 2007 at 7:54 pm (Uncategorized)

I had some more time to think about what I am looking for in a directory synchronization tool. I had decided that the main requirements were:

  • Peer-to-Peer model: mostly for private synchronization (i.e. only for the same user) from multiple nodes, but also opening up opportunities for group sharing
  • Branch-per-node: each node will be a branch, but will have to have some sort of intelligent merging in order to deal with the potential problem of binary files growing out of control
  • HTTP support for firewall issues

Given those new requirements, I googled “BitTorrent Sync” and was surprised to find a project by the name of PowerFolder | Easy Secure File Transfer, Share, Sync and Online Storage Software I’m doubly thrilled to find that it is Open Source, although it appears to have a dual-licensing scheme which automatically makes me skeptical.

I’ll have to give the produce a peak and report back whether or not it meets my needs. Stay tuned.

Permalink Leave a Comment

Home Directory Sync

August 5, 2007 at 2:16 pm (digitalLife)

Ok, now I’m feeling a bit obsessed with this idea. It would make my life tremendously easier if I didn’t have to think about managing my different files. I just want them to always be available on all of my mahcines, but without having to change the way I work at all.

Last night, I touched on how to make Windows a little less ugly such that it will work well with the standard *nix directory layout. I also mentioned some resources that go in to detail about how they manage their CVS/SVN syncing issues. But then I started to realize those solutions have one fatal flaw – they still require you to “just cvs up at the end of the day.” I don’t even want to have to worry about that, because I won’t remember to do it.

Now I feel compelled to lay out my requirements for what would be the perfect home directory solution. Maybe I’ll call it “Distributed Home Dir” or something more creative, but along those lines:

  • Synchronization of most files should happen automatically, unless there is a conflict
  • Certain “large” files (usually binary) should not be automatically sync’ed
  • Somewhat intelligent defaults should exist to determine which files need to be synched up and which ones don’t
  • Options should exist for whether or not to have “full synching” ( constanly tracking changes a la Google Docs and keeping a record of the history), “just copy” (no history), “manual history” (manually choose to ‘commit’ changes), “ignore,” and probably others.
  • Bad practices should cause warnings along the lines of: “Saving history for these large binary files will take up lots of space, maybe you should just save the latest copy “
  • Files that are not automatically sync’ed should be able to be obtained on demand (assuming connection is available)
  • Most syncing occurs in the background at very frequent intervals (on par with gMail or Google Docs)
  • Each sync’ing node should be able to be a source as well
  • Each sync’ing source should be able to proxy another node as well
  • Multiple available nodes might afford a bump in bandwidth a la BitTorrent
  • “Installing” should be drop-dead simple, and maybe even pre-configured if you are able to access the install from one of your existing nodes
  • “Thin” nodes such as a flash drive or PDA should integrate well
  • Alerts might occur when you are starting to cause a conflict, at which time you can choose to branch (layman’s terms: “work on a second copy and merge later or keep a separate copy for this environment”)
  • Some “branches” will have to be intentional however, so as not to overwrite intentionally different types of files. For example, the %HOME%/Documents/My\ Google\ Gadgets folder you find in Windows.
  • “System tray” capabilities would be nice
  • Integration with other “file systems” (see the MacFuse Google Tech Talk for more info)
  • Solving the “Shared” problem would be nice (i.e. when we download pics from our family camera, they go in a shared home dir . . how do we get access to those resources on another machine)
  • Backed by established version control systems, most likely a distributed one like mercurial.
  • Encryption should be mandatory

That is probably more than enough to get things running. Hopefully I won’t have to write much code (otherwise this may never happen).

Permalink Leave a Comment

Fixing the ridiculous Windows “Home Directory” Directory Structure

August 4, 2007 at 11:03 pm (digitalLife)

I’ve really over-complicated my life at this point. I’ve turned my quaint little home into a freakin’ disorganized computer lab (in case my wife ever reads these posts, I should thank her for putting up with me). At the moment, I’m trying to get a handle on all the files all over the place.

I’ve gone down this road a million times before and never ended up tackling the problem sufficiently. However, I’m feeling inspired by a blog post I just found illustrating HOWTO rid yourself of the abhorrent “Documents and Settings” and “My Documents, My Music, My This and My That. ” I always thought my aversion to the Windows way of things was just because I was a command-line junkie, but I now realize their mess was part of the roadblock to organizing the various files on all these systems.

I’ve been hoping to use a source control solution like subversion (of course, after listening to Linus Torvalds at a Google Tech Talk, I’m thinking this is the perfect use case for a “distributed source control” solution). However, I’ve never wanted to go after bits and pieces at a time – I want the whole dang home directory synched – BOOM. I’ve never had the desire to play around with where to put various crap. Up until now, the best solution I could come up with was from one article I read which had a slick solution of checking in little set-up scripts for various environments. Still though, those scripts sound kind of ugly when Windows is all high maintenance.

Then comes the article: Derek Slager: Emulating Vista’s User Directory Structure on XP In a nutshell, instead of relying on the various scripts for the various environments to piece together your desired directory structure, just change the screwed up environment itself! If I can pull this off, then the change will also be able to be applied to the Home Directories of the wife and kids, which will be the proverbial grand slam of overly complicated home computing.

So, the plan is the following:

  1. Implement the changes from the referenced blog on all my XP instances
  2. Implement source control (some resources: http://toykeeper.net/tutorials/svnhome, http://tratt.net/laurie/tech_articles/articles/home_directory_synchronization, http://linuxjournal.com/article/5976)
  3. Make the conflict resolution process drop-dead simple for even my wife (who is actually pretty savy at computing, but hasn’t seen a diff in her life)

Honestly though, this will only solve some of my problems. I would still much rather prefer being able to just “mount” certain network directories to certain places (specifically in dealing with our shared pictures, as the size of them is too big to “distribute” to all machines).

Alas, let’s see where this adventure takes us.

Permalink Leave a Comment

Somebody thinks digg is destined for failure – think again

February 5, 2007 at 2:25 pm (disruptive, social web)

Why digg is destined for failure – Download Squad
Say what you will about the quality of feedback at digg (or are we really talking about demographic preferences here), but that doesn’t at all dilute the power, impact, and disruptive promise that sites like digg offer.

For example, digg swarm is probably exactly what you will be seeing on your TV set within the next half decade. It’ll be the “what’s everyone else watching” as opposed to channel surfing as we know it.

The problem lies in segmenting that feedback to those whose opinions you respect. This is basically what eBay had to tackle when they first came out – hence the ratings system.

Permalink Leave a Comment

Linux for the Home

February 5, 2007 at 2:23 pm (digitalLife)

I came across this product called gumstix the other day while investigating Bluetooth on Linux. Apparently they’ve got cards to add Bluetooth, WiFi, GPS, etc. to these tiny “computers.” Make these devices part of “home grid” with a web-based control center, add a wireless PDA-esque device to control the whole thing, and you’ve got some nice potential.

If you can find a way to add audio or video output, you’ve got something on par with a squezebox. Or, if nothing else, these devices could just be hubs for a given “zone” in the house, connecting to local Bluetooth devices, interfacing with X10, etc, etc.

More on the PDA devices:

Permalink Leave a Comment

Java is “Dead as we know it”

January 23, 2007 at 12:45 pm (development, open source, soa)

Paul Browne has written a follow-up to his article about how Java is “dead as we know it”: Java and those pesky Google APIs. Apparently the feedback was pretty negative to his first article. However, the guy has the right idea.

Its really not as drastic as some people want to make it sound (probably most of them are worried about their own job). I think relating this story to how things get done today might help get the idea across.

Today with many projects, there is an architect or a small group of people who are charged with creating and maintaining the API and/or frameworks for the application. In these types of projects, there is typically a much larger group using those APIs and frameworks to actually implement functionality for the client. For the sake of argument, let’s say the proportion is 20% API developers and 80% functionality developers.

Throughout the 90s, the most robust standard that would allow you to actually take advantage of this set-up was Java. Furthermore, all the tools and collaboration made it work great. However, everything basically had to be Java (for example, passing Objects along in your Request to the JSP).

Now there is a new standard that accomplishes all of those same goals, and it is web services. The platform of web services is a standard that can accomplish these goals but is much less restrictive (everything does not have to live in the JVM).

As a result, while the 80-20 dichotomy will probably be mostly unchanged in proportion and concept, it will be greatly impacted in implementation. Much of that 80% will not need the heavy solutions that we have created in the past.

However, that 20% will probably continue to look to Java to implement the robust applications that we need. Furthermore, making java open source will put it in a position to keep pace with the offerings of these newer technologies while leveraging the huge embedded base of developers that already know the platform.

Permalink 2 Comments

MySpace Redefines High School Grief Counseling

January 19, 2007 at 12:19 pm (disruptive, social web)

A couple of recent articles have illustrated how high school students are dealing with peer fatalities (car crashes mostly) through using MySpace.  The social networking phenomenon is really a perfect fit for grief/peer counseling.

To many people reading this, it is just another obvious example of how we use the web.  But for those who don’t understand it, this is a perfect example of how the social web is changing all of our lives (and its not a bad thing for crying out loud).

From a newspaper in Indiana: Internet generation shares grief online | The Star Press – www.thestarpress.com – Muncie, IN

From a Bay Area newspaper: Internet helps teens cope with loss | Inside Bay Area

Permalink Leave a Comment

Putting Tagging in Context

January 18, 2007 at 4:42 pm (tagging, web2.0)

So, I’ve been actively using del.icio.us for about two weeks now (just long enough to know how to spell it without double-checking).  Being the eternal organizer that I am, I’ve already realized my tags were in need of some, errrr, refactoring.  So, I went for it and the results were: O man – this isn’t easy.

Basically, it reinforced by belief that tags need a context.  Just using a big cloud of tags causes me trouble.  I think the trouble bares itself out when I’m deciding which related tags to use for an item.  For example, if I’m about to tag something as Ubuntu, should I also tag it with Linux?  Isn’t that relationship somehow implied already and thus, following data/object modeling techniques, it shouldn’t be “stored”?

I’ve always believed that the beauty of tags is that we break out of the often unnatural “everything has a hierarchy” mold.   For example, back in college I was the webmaster for my lacrosse team.  I wasted many a brain cycles on deciding whether or not the game summary belonged under the “News” section or the “Games” section.  Looking back, it was quite obviously both and tagging would have solved the problem.

On the other hand, the ugliness of tagging is that we now have a “nothing has a hierarchy” problem.  For example, I tagged an entry about wine (the “emulator“) on Ubuntu with the tag “wine”.   You should see where I’m going with this . . . what happens when I want to tag the cork’d website with “wine”?  Well, that’s an ambiguous tag (and of course, look at the title of this blog to see what I think about that).

Where’s the middle-ground?  Tags need a context!  This is kind of where the del.icio.us bundles go, minus some important features.  For example, if I have a web2.0 bundle that includes aggregators, SaaS, mashups, etc., there will obviously be times when I just want to pull-up all the links in web2.0.  Unfortunately, the bundles don’t work like that.  If they were themselves tags, or at at least treated like them in del.icio.us searches, I think the “tags are related” problem would be solved.  Further more, I’d really like to tag web2.0 with “horriblemoniker” – but that’s for another post.

A different problem is in tagging an item with a location.  If you want “37.80327385185865, -122.25723266601562″ to mean anything, you’d have to know that tag is a type of location of the longitude, latitude variety.  This is the same problem with the aforementioned “wine” tag: some tags aren’t nearly as useful if you don’t know their type.  Do tags need namespaces?  Carrying that argument to its logical extent, can some tag namespaces have exclusive owners?

Upon writing this, I’m realizing this is an age-old problem of sorts.  I’ve seen it first hand in attempts at “dotted-line reporting” in the context of business organizations or “multiple-inheritance” in the OOAD context.  I would bet this is quite an issue in the context of biological sciences.

So, who’s solving this problem?  I’m sure there are a ton of resources out there that have waxed poetic about this, so please show me the light.

Permalink Leave a Comment

Next page »