Gmail: usability/accessibility issue

Gmail uses mouse-down event instead of click (mouse-button-release) at many places (Compose Mail, Inbox, Chats etc) in it's frontend. 

I face following problems because of their wrong choice of event (mouse-down instead of click):

  • I can't select text while in list view. For example, if I want to select the sender's name or subject, instead it opens the mail thread.


  • If mouse-button is pressed by mistake on any of links (Compose Mail, Inbox etc), associated action takes place and I am forced to click on browser's back button (or equivalent) to get back to previous state (screen/view). I don't get a chance to change my mind by releasing mouse-button outside of link area.

  • </ul>
    Technorati tags: ,

Twitter Vulnerable to SMS and Caller ID Spoofing

I found (via bluesmoon) an interesting article on Twitter vulnerability.

Technorati tags: , , ,

Which Creative Commons license would you choose for your blog?

I have been planning to publish content under Creative Commons. I am thinking to choose either 'by' or 'by-nc-sa' license, little confused because of existing content.

I have some code published earlier under BSD, MIT and different license. Is applying creative-commons going to affect that?

Thought, I would seek for some suggestions by asking everyone. Which one would you choose for your blog? And why?

Thanks in advance.


Update: Creative Commons doesn't recommend applying it's licenses on code. It solves my problem, I guess I can choose one of relevant licenses now.

Technorati tags: ,

Not yet optimized for Firefox

I opened in Firefox and noticed this:

I have not seen such a nice screen to warn users about browser-compatibility. It's always better to let user know of such things rather than saying nothing.

Creating Passionate Users - Reverse engineering passion

I watched the video-recording (101 MB .ogg file) of Kathy Sierra's talk from LCA '07. It's really good and I learnt many things, which would surely me in getting better at things (building software/products or communities).

Thanks to Gopal for sharing the link.

I noted a few things (points, quotes, words etc etc).

Some of the attributes of passionate users:

  • Evangelize
  • Learn
  • Spend Money
  • Spend time
  • Connect with others
  • Show off / take pride (tshirts, bags etc)
  • Elevate the meaning
  • </ul>

    Some quotes/sentences used in the talk:

Google! My Maps - What is future of wikimapia?

Google maps has introduced a new feature called My Maps which allows users to customize/create maps by adding placemarks, lines and shape. It's a useful feature, however, I have some doubts.

I am just wondering, what is future of Wikimapia now? In Google My Map, I can see some problems which are redundancy and accuracy of data. Wikimapia was a collaborative environment which means it allowed others to rate/review any changes/addition in content (map).

Technorati tags: ,

Google Talk user-interface annoyance

Several times a day, I get irritated by following issues in Google Talk user-interface:-

  • Moving mouse over contact list brings up the contact-info popup. Which is quite irritating and leads to another annoyance mentioned in next point.
  • While accessing the scrollbar, very often, I have to go through contact-list area and that brings up the contact-info popup, which stops me accessing scrollbar. I have to click somewhere else or move mouse out to get rid of popup. I believe, there should be good amount of gap between contact list and scrollbar.

Google Talk UI

Yahoo! messenger doesn't have these issues. I get to see contact-info only when mouse is over buddy-icon, which is on left-side. One fix, it solved two issues.

Yahoo! Messanger UI

Constructing YouTube FLV URL on client-side without any server-side script

It seems, there is a easier way of constructing YouTube! FLV URL on client-side without using any server-side script.

We need get the YouTube video_id from any of following places:-

  • YouTube! video URL, which looks this (video_id in red):
    • </ul>
    • YouTube RSS feeds [1]
    • YouTube API [1]
    • </ul>

      Then, construct a URL like this:

      Above URL is used in YouTube embed-code. It is basically a server-side redirection that points to YouTube Player (.swf). Above redirects (server-side) to following URL:-

      As you can see in above URL, it contains "t" param (in red), which is what we need along with video_id to construct YouTube video (FLV) URL, YouTube FLV URL would look like this:-

      You can check out code below to figure out things your own. You can also check out the example-app.

      Flex 2.0/ActionScript 3.0 example:-

      import flash.display.*;
      private var loader:Loader;
      private var abortId:uint;
      private function onAppCreationComplete ():void
      loader = new Loader ();
      private function startLoading ():void
      var req:URLRequest = new URLRequest ("");
      loader.contentLoaderInfo.addEventListener(Event.INIT, handlerLoaderInit);
      logMessage ("Loading YouTube URL..");
      private function handlerLoaderInit (event:Event):void
      logMessage ("Loaded, processing: " + loader.contentLoaderInfo.url);
      var urlVars:URLVariables = new URLVariables ();
      urlVars.decode (loader.contentLoaderInfo.url.split("?")[1]);
      logMessage ("Processed:-");
      logMessage ("\t\t video_id:" + urlVars.video_id);
      logMessage ("\t\t t param:" + urlVars.t);
      logMessage ("\t\t thumbnail-url:" + urlVars.iurl);
      var flvURL:String = constructFLVURL (urlVars.video_id, urlVars.t);
      logMessage ("YouTube FLV URL: " + flvURL);
      playVideo (flvURL);
      logMessage ("Started Playing Video...");
      private function constructFLVURL (video_id:String, t:String):String
      var str:String = "";
      str += "video_id=" + video_id;
      str += "&t=" + t;
      return str;
      private function playVideo (url:String):void
      player.source = url;;
      private function logMessage (message:String):void
      outputText.text += message + "\n";
      trace (message);

      ActionScript 2.0 code-snippet:-

      createEmptyMovieClip ("mc", getNextHighestDepth ());
      var _mcl:MovieClipLoader = new MovieClipLoader ();
      _mclListener = new Object ();
      _mclListener.onLoadStart = function (target:MovieClip)
      trace ("The URL is: " + target._url);
      var _lv:LoadVars = new LoadVars ();
      _lv.decode (target._url.split ("?")[1]);
      trace ("t param: " + _lv.t);
      trace ("video_id: " + _lv.video_id);
      trace ("thumbnail: " + _lv.iurl);
      trace ("flv url: " + constructFLVURL (_lv.video_id, _lv.t));
      _mcl.unloadClip (target);
      function constructFLVURL (videoId:String, t:String):String
      var str:String = "";
      str += "video_id=" + videoId;
      str += "&t=" + t;
      return str;
      _mcl.addListener (_mclListener);
      _mcl.loadClip ("", mc);

       [1] Flash clients would require server-side proxy because YouTube changed crossdomain.xml sometimes back.

Gmail Paper

Google has introduced Gmail Paper, they would be shipping you the print-outs of your emails.

Go check it out

BTW! It's April 1st today, does it remind you of something?

Technorati tags: , ,

Bandwidth Limit Exceeded

My blog was down for some hours because bandwidth limit (3 GB) exceeded. I need to spend sometime to figure out why 3-4 GB of bandwidth being consumed? I don't blog often, most of the posts are in text and only a few example files are there.

Is it spammers hitting or some kind of DDOS attack?

AWStats and Google Analytics didn't help me much. I generally look at raw-logs in using VIM or one of my local-flex-app. Idea: Wouldn't it be good idea to have an Apollo app that can show server logs in realtime? 

I would appreciate if you have any suggestions on how to figure out the details?