Vonage doomed?

This totally sucks, as a Vonage user, I’m wondering what will happen to Vonage. I’ve saved a lot of money on my telephone usage: average $21 compared to $55+ with Sprint (now Embarq).

U.S. District Judge Claude Hilton approved Verizon’s request curtailing the service today, sending Vonage shares to a record low. Hilton, in Alexandria, Virginia, said he won’t sign the order before a hearing in two weeks on Vonage’s request for a stay. A jury found March 8 that Vonage infringed three patents and said it should pay Verizon $58 million.

:(

If Vonage has to shutdown, I might have to go with
TimeWarner cable’s digital phone or try sunrocket assuming they don’t have the same patent issue.

I hope Vonage can figure this out even if it means a rate increase, as I’m still under $55 per month.

tonights hackfest

My work on getting sm-photo-tool to use smugmug’s REST API continues. It’s been slow going as I’m also learning python as I go.

Tonight I can get image and album info using the REST API which returns me an XML document. I parse the document using DOM, and dynamically create a class with an internal map (or dict in python) of attributes.

Here’s a sample response from the getImageInfo REST API call:

<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="ok">
 <method>smugmug.images.getInfo</method>
  <Info>
   <Image id="134646762">
    <Album id="2559293" />
    <FileName>IMG_0112.JPG</FileName>
    <Caption />
    <Keywords />
    <Position>1</Position>
    <Date>2007-03-08 17:48:25</Date>
    <Format>JPG</Format>
    <Serial>0</Serial>
    <Watermark>0</Watermark>
    <Size>2553371</Size>
    <Width>2592</Width>
    <Height>1944</Height>
    <MD5Sum>a7d81edf9fb659da1947514dbbcfb204</MD5Sum>
    <LastUpdated>2007-03-08 17:48:34</LastUpdated>
    <OriginalURL>http://familiarodriguez.smugmug.com/photos/134646762-O.jpg</OriginalURL>
    <LargeURL>http://familiarodriguez.smugmug.com/photos/134646762-L.jpg</LargeURL>
    <MediumURL>http://familiarodriguez.smugmug.com/photos/134646762-M.jpg</MediumURL>
    <SmallURL>http://familiarodriguez.smugmug.com/photos/134646762-S.jpg</SmallURL>
    <TinyURL>http://familiarodriguez.smugmug.com/photos/134646762-Ti.jpg</TinyURL>
    <ThumbURL>http://familiarodriguez.smugmug.com/photos/134646762-Th.jpg</ThumbURL>
    <AlbumURL>http://familiarodriguez.smugmug.com/gallery/2559293/1/134646762</AlbumURL>
   </Image>
  </Info>
</rsp>

This is the class I want to create:

class Image:
    def __init__(self):
        self.data = {}
    def __setitem__(self, key, value):
        #print "__setitem__(%s:%s)" % (key,value)
        self.data[key.lower()] = value
    def __getitem__(self, key):
        #print "__getitem__(%s)" % (key)
        return self.data[key.lower()]
    def __str__(self):
        return str(self.data)

This makes it easy to use the resulting object.

    print "getimageinfo ---------------------------------------"
    imgInfo = sm1.getImageInfo(sessionid, images[0])
    print "imageinfo: " + str(imgInfo)
    print "TinyURL = " + imgInfo['TinyURL']
    print "imageid = " + imgInfo['imageid']
    print "albumId = " + imgInfo['albumId']

All of the code can be found here..

A more OO way is to have getter and setter methods, but I really like the ability to treat an object as a map and send it “messages”. I despise getters and setters now.

Off to bed now.