04
Aug 2009

A Simple Approach to a Google Voice Dashboard

I got my Google Voice account little over 3 weeks ago. I have been reading up on the various features, got real excited about all the cool things one can do with the GV account. I was pretty close to buying an iPhone app and then the last weeks mess of the App Store removal of the existing GV apps and rejection of the Google's GV app. Definitely was little dissapointed but not terribly concerned. Google Voice mobile web app is not bad and there is a neat little bookmarklet that can act as a speed dial for a contact. I do hope that Apple turns around and allows the iPhone GV apps.

So this got my thinking so what are the GV tools available for a desktop, it would be cool to have a dashboard or a mac widgets to simply click and have them it call me and my contact. In fact this is one thing that always bugged me at my work. We use Cisco VOIP solution, however our internal address book and this VOIP solution is not connected. What I mean is when I click on the contact number, I would like it to connect me and my internal contact via the handset. Unfortunately this was not available. There were options to add contacts to the phones address book, search the directory from the phone etc but none of these were what I was looking for. After little googling around guess what I ran into ? A firefox add-on for Google Voice. This add-on is from @chadsmith Here is how it works, get the firefox add from here , install, restart firefox. Setup the add-on preferences:


Once this is done, the add-on recognizes a phone number on any website that you visit in firefox and lets you click on the number which automatically will call that number and your forwarding number. Voila! Now one of my requirements is covered. When I search for an employee in our internal address book/directory, i click on it and the add-on is configured at work to forward to my work number (and my personal computer at home is configured to call my cell phone).
So onto my next requirement of a simple dashboard to call my contacts (friends, family and few of my frequently called colleagues). You can actually go into your google voice account/contacts section and call from there. However, its not an elegant solution, not a dashboard I am looking for. So here is what I did, I exported my google contacts (only specific groups) to a CSV format, opened it in MS Excel, removed all the columns except for name and number and saved it in web page format, edited it in Textpad to remove all the MS specific entries in the file and added it to my netvibes account. In netvibes, I created a new tab for my google voice dashboard and I created one HTML widget per contact group. Here is a sample of how it looks. Now with the firefox add-on, i click on any contact number and I am on the call!


There are other ways to do this to, you can export the contacts list in a Tab delimited format, upload to google docs and open that doc in firefox, all the numbers will be clickable. You can also email that doc content and put it in a seperate folder/label and that entire list will be clickable. Until I find better alternatives for this or Google Voice natively provides such contact list dashboard, I am going to use the netvibes tab as my Google Voice Dashboard.
I am still trying few things to better way to get such a dashboard on my iPhone until I find I will be using the google voice mobile page.

31
Jul 2009

#BINGFAIL

I was looking for the mac101 article from tuaw on switching from picasa to iPhoto. So I obviously googled with the search string 'tuaw picasa iphoto' and sure enough it popped up as the first result. I was curious on how effective bing will be at this. Not only it was not the first result (it was 5th), it linked a list page that had this article and it was a mobile page. #BINGFAIL

http://www.google.com/search?hl=en&ei=uLFzSpSjLYXwsgPBoMjHCA&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=tuaw+picasa+iphoto&spell=1


http://www.bing.com/search?q=tuaw+picasa+iphoto&go=&form=QBLH&qs=n

28
Jul 2009

Feedly to Google Reader "Anything you can do I can do better"


Usability
If you ask people about why they like Feedly they might say they like the digest, the magazine style cover page etc. However, I would say the biggest gig with feedly is the brilliant ease of use. The information flow is awesome. Here is one example with adding subscriptions.

In google reader adding subscription is kind of strange sequence of steps. You add the subscription and you can drag and drop the feed into the desired folder once its subscribed. If you need a new folder, you have to go to the settings page , go to the subscriptions tab, chose the folder drop down and add a new folder. You cannot add a folder even in folder settings tab. I would never design the page flow that way

In feedly adding a subscription is a smooth flow
a. Click add a source which will give u the ability to preview


b. preview the source feed and click add to chose the folder








c. chose the right folder to add this feed



Options Options Options
I like customizations for look and feel, behavior etc. One thing you find lacking in google reader are these options. There are few but feedly provides a while bunch options to customize your experience, here is a sample:



Social Aspects

Check this out, you can share in google reader, you can save it for later, you can tweet it, you can send the link to your facebook friends, email it and also shared it on friendfeed. Options are just unlimited.

In fact it allows you to put a custom message at the end of the feed. I am using it to tip techmeme and I already made one good tip:



Feedly not only does a great job on allowing you to share, it also does a great job on scanning friendfeed for relevant conversations and allowing you to participate in the conversation right in the feed. Here is an example, it shows who liked it, who commented on it, gives u the ability to like it, comment it. I am reducing my friendfeed time by actually participating via feedly on relevant items.

Oh and yeah it retrieves the comments on the actual article too (google reader simply gives a link):

I can go on and on but I think you get the point. If you really want to best rss reading experience you got to get the feedly extension for firefox to read your google reader items.

27
Jul 2009

Automatically tweeting shared items in your Google Reader

Alright there are easier ways to do this using friendfeed etc but I wanted to write a Java program that reads my Google Reader shared items and post them to a twitter account. So here it is I wrote one using Rome to read google shared items atom feed and JTwitter (the Java library for the Twitter API) to write to Twitter. 

Get Feeds:

    public static java.util.List getFeedEntries() throws Exception
    {
        URL url  = new URL("http://www.google.com/reader/public/atom/user%2F04396927642867243125%2Fstate%2Fcom.google%2Fbroadcast?"+Math.random()); 
        XmlReader reader = null; 
        try { 
                reader = new XmlReader(url); 
                SyndFeed feed = new SyndFeedInput().build(reader);             
                return feed.getEntries();
        } finally { 
            if (reader != null) 
                reader.close(); 
        } 
       
    }

Get Tiny URL:

        public static String getTinyUrl(String fullUrl) throws HttpException, IOException {
            HttpClient httpclient = new HttpClient();
           
            // Prepare a request object
            HttpMethod method = new GetMethod("http://tinyurl.com/api-create.php");
            method.setQueryString(new NameValuePair[]{new NameValuePair("url",fullUrl)});
            httpclient.executeMethod(method);
            String tinyUrl = method.getResponseBodyAsString();
            method.releaseConnection();
            return tinyUrl;
        }

Update Status:

    public static void UpdateStatus(String title, String link) throws Exception{
        Twitter twitter;
        try {
            twitter = new Twitter(userName, password);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return;
        }
            String tinylink = Reader.getTinyUrl(link);
            java.util.List searchList1 = twitter.search(tinylink);
            if(searchList1.size() ==0)
            {   
                String StatusMessage = title +" "+tinylink;

                //split the message into 140 char strings.
                List<String> messageList = twitter.splitMessage(StatusMessage);
                for (int i = 0; i < messageList.size(); ++i) {
                    try {
                                  twitter.updateStatus(messageList.get(i));                       
                    } catch (TwitterException e) {
                        System.out.println(e.getMessage());
                        return;
                    }
                System.out.println("Message sent "+StatusMessage);
                }
            }
            else
            {
                System.out.println("Skipping item already published "+title);
            }
    }

I tested tipping to techmeme using the above approach, i created a test account for this, you can checkout these test tweets at kiranpatch

 

Few things to note:

  • Wanted to use Bitly URL shortner. Found bitlyj  but it still seems to be work in progress
  • If I maintained a database of my own, I could have eliminated the ugly message search before posting.
  • Without the Math.random in the URL, the feed contents would not get refreshed.
  • Tried to use Jakarta FeedParser but could not get it to read atom feeds.

One obvious thing here is the lack of real-timeness. There is lot of lag from the time the feed apears in google reader and the lag in my program to pickup the shared item and push it to twitter. Obviously this would be way cooler with pubsubhubbub or rsscloud

You can catch a better explanation of why this will be good at Anil Dash's blog where he defines this as PushButton Web

 

 

 

11
Jul 2009

A dev ER

This Monday I came back from a long vacation, fully charged and refreshed and then come tuesday night or rather early wednesday at 1:30 AM got a call from our tech support about a customer issue, yes I make sure everyone in the company can reach me any time. Its on my internal profile and I answer my cell phone no matter what time or day it is (even when I am on vacation). Why ? Customers both internal (integration teams) and external come first and its an un-written rule that they use it at odd times when its a critical situation. So that 1:30 AM call wednesday was a critical situation for a customer. I attend a conference call right away, it was like a doctor waking up and going into an emergency room right away. System Admins throwing log files, cpu usages.. DBAs throwing in sql traces, db connection usage patterns, business users throwing in functional issues, IT and Business units pitching what they want when they want.

It took us till today 3:00 PM to diagnose, reproduce, fix, test and get the customer up and running. All this time me and my manager literally never slept (an hour or two max per day). This has to be my toughest issue I encountered in 10 years of my professional career. Not just from the technical complexity of the issue but with all the other business complexities, integration complexities etc. We had to debug our stuff, we had to co-ordinate with other development teams, support, product assurance, off shore teams, get the data together, analyze, re-analyze etc and get the customer up and running.

It really felt like we were in an Emergency Room. Now its time to get back to sleep, I sure hope I do not get the 1:30 AM call tonight.

04
Jul 2009

My impressions of @gdgt

In summer 2008 a friend and I launched a social shopping web app. We ended shutting it end of last year. The reason gdgt.com is really interesting to me is because it has lot of stuff that we did and were trying to do. Having spent a lot of time designing and building a social shopping app, I have to post a review of gdgt.com!

From what I read in the tech blogs is that this is a solution resulting from Peter’s idea of building a place where gadget lovers can share what they have, want etc and Ryan’s idea of building the worlds most complete gadget database. I do love the idea of a social network for gadgets. Howver building the database, I am not so sure crowdsourcing is the best approach for that, I do hope I am wrong I love gdgt.com and I want it to be successful.

Here is my review of gdgt.com, the social network for gadget lovers:

  • Gadget Community. gdgt is like twitter for gadget lovers. You can discover people with similar gadget interests and follow them like in twitter. I would like to see a friend finder from email address books, twitter, facebook etc
  • Gadget Discussions. The discussion threads around a particular product are great. Though there are 100s different web sites where this already happens however the social aspect to gdgt.com makes this interesting. Think friendfeed discussions versus regular forums. I would like to see a clearer interface where there is a message stream from your followers, your discussions, your gadgets are shown seperately from the complete community. I would like to see an option to follow a gadget category or sub-category. When I want to buy for example a monitor and I am not decided I can follow a monitors category to see all the latest feedback, discussions on monitors.
  • Social Widgets. gdgt allows you to save your gadget lists of what you own, what you want to buy etc. Even with our webapp we provided this and I was a huge fan of widgetizing those lists to put on your own blog. I liked the fact that they have this right from the getgo and I already included my widget on this blog!
  • Reviews/Ratings. Now you cannot have a gadget site without this! Liked the fact that they differentiated between user reviews and review links. However one thing we did in our app that I see missing is automatic pull of reviews from other places. We did two things, pull user reviews from amazon and epinions.com (via shopping.com affiliation), professional reviews from cnet etc via google custom search.
  • Pricing: With pricegrabber affiliation gdgt.com is able to show price comparison for a given gadget. We did this via shopping.com affiliation and in addition we also allowed users to alert of better prices elsewhere by allowing them to publish deals and we also provided results from google custom search of all popular deal sites. I think those would be good additions here.
  • Gadget Ads: I love that you can add the gadget in their add to your want list etc. Thats pretty cool. Though their ads are pretty static right now and but I can see that they will have lot more of them and these gadget ads will be lot more dynamic (a monitor ad when I am in a monitors category etc)
  • Gadget Database: I am not convinced that users can provide the most comprehensive specs for a gadget. Even I am adding gadgets its fun but not with all those details. Though the specs are optional, the database would be incomplete without all the specs for a gadget. And again the sepcs for a gadget are best obtained from the manufacturer like how Amazon and other retailers obtain. Amazon already has almost complete database of these gadgets. Can you not build a gadget finder using Amazon API ?

Navigation can be made little simpler but I love the overall look and feel and I love the whole concept behind gdgt. The high profile founders got a good start and I sure hope they will succeed. I am sure going to be an active member and postively contribute to the community.

19
Jun 2009

The Next Enterprise Collaboration Wave - Google Wave what else?

A lot has been talked about Google Wave over the last 2-3 weeks since Google publicly announced their secret project in I/O conference. The most interesting aspect of the chatter about Google Wave is that its in the enterprise space. Thats right a lot of Enterprise 2.0 bloggers, evangelists, early tech followers/adopters are talking about Google Wave and possible implications to enterprise collaboration. This is the first time I have seen such a large open source initiative receiving enterprise focus from the get go and I believe its for the right reasons. See Dion Hinchcliffe article on Wave’s enterprise implications. Like he says it might be too early to say how this play out at the end but it does have a huge potential to shape future Enterprise collaboration platforms.

On the other hand Hutch Carpenter says this could be a faraway dream and his concerns are valid, Google Wave will not come for free, Enterprises have to implement, maintain and monitor. Hutch is not alone in pointing out that Enterprises will have a uphill mountain to climb to get into Google, Elias Bizannes says it will take a generation for this to happen. Jake Kuramoto at theappslab expresses concern about the unknowns (security, compatibility, technology constraints, integrations, uptake, interoperability).

The overall theme I have seen in the reactions is that there is great hope for Google Wave to be a huge hit in Enterprises but still lot of unknowns, which I tend to agree. 

However, are we left with any other option right now? Sure we have blogs, wikis, micro-sharing enterprise apps like Yammer, even some friendfeed style tools like SocialCast and more mega collab tools like SocialText , but really after seeing how collaboration should be done in real time with aggregation and centralization, can you see any of the existing collaboration tools doing all that? Wave does not replace those but it brings them together. Which is exactly the problem the enterprises have right now, too many disconnected systems to deal with. Let me take some samples and use a ‘really’ segment to express my frustration with the current tools:

  • PMs have a system to store requirements, architects and designers have a place to store their specs, coders and reviewers have a space to publish their code and reviews. Really? Shouldn’t everything be related by the requirement so that everyone from PM, Architect, Manager, Developer, Documenter have the knowledge on whats happening for that requirement?
  • Forget about 1000 people, imagine a company dealing with 1000 teams small and large, yeah large Enterprise baby, can you imagine the number of different tools they use for collaboration? Can you imagine being in an integration team? Its a nightmare. Shouldn’t there be a standard for that collaboration?
  • To schedule a project, manager enters the high level tasks based on requirements, send that list to tech leads/developers for details,discussions happen on email and when finalized enters them back into to MS project or equivalent online scheduling tool. Really? Please, someone save me. Can I just type free text “Task xyz to be completed  on 1/1/2010 by @ABC” and have the relevant dev add details and ask questions right there? Can I have a robot just create a schedule task based on the task name, due date, assigned person and sub tasks? 
  • U get a critical bug assigned to your product. You start email, IM discussions with you team, looking at different angles to determine if its a known issue or not etc. Within an hour you get an email from the escalation manager/customer support rep/or sometimes from way high up on why there is no activity in the bug database. Really? Someone needs it to be updated saying that you are discussing? Or with the new Enterprise 2.0 style micro-sharing you need to update your status? Really, shouldn’t the discussions be discoverable (may not be by everyone but with some authority hierarchy and topic ownership) or Mr. solve everything robot be able to show a threaded discussion with the bug to show the activity in the team?
  • You design a feature, get it reviewed with all the 10 integration teams and implement it. You end up making a change to the feature, you update the spec, now set a meeting, send an email or blog about the changes etc to let them know. But really? I have to do all that again? Can I just update the doc and be done with it?

The point I am trying to make here is, Enterprise collaboration as it stands is broken, its slow, its disconnected, its not universal, its not standard. Enterprises are building/trying various things around collaboration, however with a lack of standard, lack of defined process they will create only more disconnected systems. Like email Wave has to become the collaboration standard that can bring these disconnected systems together and automate mundane process. It might take years to happen, someone has to implement all this stuff, but I don’t see an alternative do you? I am not jumping on this tide because its new, I have genuinely been thinking about the collaboration issues and been looking for something like Google Wave to come to the rescue. I blogged couple of months ago about some related thoughts: http://bit.ly/3Nfw3X

Can all those concerns expressed by the enterprise community be just opportunities for Enterprises and Individuals to solve real world problems?

16
Jun 2009

Lot of driving over the weekend

Travelled about 1800 miles from bay area to zion and bryce and back! Hikes in Zion and Bryce were a lot of fun! Wish I had stayed for another couple of days! 

http://bit.ly/9IpDu

11
Jun 2009

46% effective tax rate on the $99 iPhone 3G

So lot of discussions recently about the price comparisons of the smartphones iPhone, Pre and G1 with the introduction of the 99$ iPhone 3G and the 199$ iPhone 3GS. The billshrink math here  and one related discussion here

Another angle to this is the tax on the 99$ iPhone. Many or most of us know that the tax on subsidised phones are really on the pre-subsidized price. But this gets interesting with the new 99$ iPhone, why?

Cost of the subsidized iPhone 3G = 99 dollars

9.25% tax in CA                          = 46.16 dollars (9.25% on 499 unsub price)

Total cost (without monthly commitment) = 145.16 dollars so that is 46% tax and not 9.25% from a pure end user perspective.

So how is this different than before? Its not but the % are skewed. With $199 iPhone 3G you were pay 55 dollars as tax which is less than 30% effective.

The interesting thing is with pre I believe the tax is charged on 849$ so you end up paying 78 dollars as tax vs 55 on the $199 iPhone 3G S.

Its common knowledge about the tax on pre-sub price but 46% effective tax on a iPhone 3G throws a new angle on how you look at the price.

11
Apr 2009

Collaborative Conversations, FriendFeed for Enterprise?

If you are following Twitter, FriendFeed and the real time web, you probably have seen the TechCrunch article on FriendFeed's future and that Robert Scoble disagrees with that.  Both the arguments make sense, FF is a very cool app but there is a risk of not getting into the masses or may be it will. I first heard about Twitter on 11/28/06 but I did not signup or start using Twitter until 09/18/08. If you asked in 2006, if I would use Twitter, I would have probably said 'why in the hell would I write 140 char messages for strangers to see' and 'why would anybody care about what I have to say'. Now I tweet on average once a day. So today someone might say that FF is too fast for me or it wont let me focus on work or why the hurry in getting the information. However, they might find themselves gluing to FF soon and figured out on how to effectively work and use FF to stay on top of the feeds. In anycase, I am no expert when it comes to the so called "social media" and I am not going to predict Twitter, Facebook or FriendFeed's future, I am sure going to watch and adapt. However, I have a lot of experience in enterprise development and managing multi-shore teams. I love all the awesome tools that are available on the web. However, I hate that I cannot use them in the enterprise. I tweeted recently about few tools that I wanted to use http://bit.ly/28ORZX . Oh yes to all the cloud computing fans, I am a huge fan of cloud computing but there is no way large enterprises will let you discuss/post future product development issues on a outside the firewall hosted services. Traditionally Enterprise collaboration is achieved with very minimum set of tools, email server, file server, calendar server etc. Slowly wikis and blogs have made their way. Its time for enterprises to adopt real time collaboration. Its no wonder Yammer, Socialtext Signals, Presently are having good success in providing enterprise microsharing solutions by selling their SAS and packaged software. Laconi.ca announced plans to host paid microblogs on status.net. Hop over to Pistachio Consulting and you will find tons of information on "Twitter for Business". You can even find a detailed list of twitter style solutions for enterprises that are already available. Granted "Twitter for Business" and "Enterprise Microsharing" are going to be huge. However, I think FriendFeed style solution has equally huge opportunity or even more in the Enterprise, let me try to explain on why. One of our employee built an internal twitter in his spare time (Yeah, you read that right). Internally its hosted for all the employees to share information. I requested him for a packaged solution so that I can set one up for my multi-shore team. So why do I want to setup for my team? I want to setup one to improve the collaboration between my team members across shores, have them publish their daily work activities, have them share things that could help others. They already post their status reports on a team wordpress blog that I setup, which helps each other know whats going in the team, where I post any big news, major process changes etc. The micro-sharing would take this collaboration to the next level in exchanging useful information that we would normally not send in emails and probably not a blog post about. However, after setting this up and test driving it for the team, I soon realized what I need is a system for Collaborative Conversation. The micro part actually is not that important, whats important is to drive every team member to participate in discussions. Twitter is great when there is not one focussed topic but people exchange random, interesting content. However to drive focussed conversations,  friendfeed rocks. I know building such conversations will bring my multi-cultural, multi-shore, multi-interested team lot closer, will help boost the productivity and will help grow as a team. I can drive centralized conversations on every aspect of the development process including design discussions, bug discussions, code review discussions, release time line discussions, document discussions. How? Everything is a feed:

  • Someone publishes a design document (just like how you feed your blog post to friend feed) a thread is created with the link to the doc automatically
  • When some check-ins in a code set a thread is created and reviews comments are exchanged over that thread
  • I create a thread with release date time line and discussions are driven on it
  • A customer issue comes, discussions are driven on it.
The key concept of friendfeed is, no matter where you take an action (publish a review on yelp, write a blog post, share an interesting article on google reader), it automatically starts the conversation on friendfeed. That concept when applied to enterprise could do wonders. It eliminates the need to keep people in the loop, it eliminates the problems of not communicating to all the involved parties by allowing you to automatically feed in important changes. Twitter for Business is great but FriendFeed for Business is awesome (of course I would not call it FriendFeed)! So FriendFeed are you going to sell me packaged software?