Thursday, January 29, 2009

Gears comes to Gmail


Well, what more can I say - Gmail is now powered by Gears. Read about the announcement and details here...




Google started off with reader and now gmail.  I see them enabling all their apps with Gears and this is the next step in making all the desktop apps irrelevant.  And they have all the right tools and pieces in hand to achieve that. The tools - Gears, the client - Chrome (& firefox?), the apps - Gmail, reader, ...

Would I be afraid if I were MSN, Yahoo, Facebook, AOL... or any other web app out there? Yes, certainly I would. And I personally would hate if Google goes ahead and dominates the web. Offline availability is so important for every web app out there. Atleast in the short run, all the web apps should try to enable offline access. Myspace saw the need for offline access to information and did the right thing by enabling their message/mail access offline.

Now I foresee many more web apps enabling offline access via Gears, or otherwise. HTML5 is still long time away before being ubiquitous. And Gears will fill in, till such a thing happens and continue to provide the new features coming in HTML5, right NOW.

Wednesday, January 21, 2009

MoMo Jan 2009

Mobile Monday meet/event for Jan 2009 is being held on 28 January 2009, from 6:30pm onwards at Sasken office. The registration is free but the number is limited, so rush for it.

The schedule is
  1. Talk by Ashish Sinha on "Is Voice the King of VAS?"
  2. Demo of VoicePHP by Yusuf Motiwala, CEO of Tringme.
I am curious and looking forward to the demo of VoicePHP.

All the details including registration can be done here...

Friday, January 09, 2009

set facebook user status

If you are familiar with facebook (or for that matter, any one of the gazillion social networking applications out there), there is a way for a user to set his status - any random string. Just like one can set a custom message on his favorite IM client.

One of my friend was exploring the facebook REST api's and was trying to set the status via the REST api. Now facebook has a peculiar feature where for certain functionality, the service adds additional security and needs additional permissions. Now, setting of the status is one such api that needs additional permission. And my friend was finding it hard to figure out how to get the permission using the REST apis. There are means to get the permission if you develop for/on the facebook platform. I too did take a look at the perl facebook api module but got fed up.

Then I googled and found this link. I used the code and ran the script. I was able to login but could not set the status nor fetch the status. So I spent some time hacking around and looking at the response from the facebook and updated the script. Now the script works, one can set the status and get the current status as well. Remember, this is not using the REST apis or the web service. I guess this is called as data scraping or spoofing? I am not sure. The code/script is not optimized but ...

Anyway, here is the perl code. The script takes the facebook login email, pass and status string as the argument...


#!/usr/bin/perl -w
use strict;
use warnings;
use HTTP::Cookies;
use LWP::UserAgent;

my $email;
my $password;

my $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6'; # whatever...

#print "Please enter FB email for login\n";
$email = $ARGV[0]; #read the login e-mail
#print "Please enter FB password\n";
$password= $ARGV[1]; #read the password

print "Thanks\n";

chomp($email); #remove last line
chomp($password);

my %postLoginData; #necessary post data for login
$postLoginData{'email'}=$email;
$postLoginData{'pass'}=$password;
$postLoginData{'persistent'}=1;
$postLoginData{'login'}='Login';

our $response; #holds the response the HTTP requests
#set the headers, let's make this a Firefox browser!
my @header = ('Referer'=>'http://www.facebook.com', 'User-Agent'=>$user_agent);

our $cookie_jar = HTTP::Cookies->new(file=>'fbkCookies.dat',autosave=>1, ignore_discard=>1);

our $browser = LWP::UserAgent->new; #init browser
$browser->cookie_jar($cookie_jar);

# incase you are behind a proxy
# $browser->proxy(['http', 'https'], 'http://127.0.0.1:9876/');

$browser->get('http://www.facebook.com/login.php',@header);

#here we actually login!
$response = $browser->post('https://login.facebook.com/login.php',\%postLoginData,@header);

#was login successful?
if($response->content =~ /Incorrect Email/) {
print "Login Failed...Quitting..\n";
}
else {
print "..and we are in!\n";
#let's go to the homepage
$response = $browser->get('http://www.facebook.com/home.php',@header);

$response->content =~ /