HOWTO Use custom DNS redirects to save browser keystrokes

5
Dec
2009

Given the recent interest in DNS and its role in the public infrastructure of the Internet, sparked by the release of Google Public DNS, here’s a hack that can help you save keystrokes in the browser while accessing your favorite sites. Instead of typing in “youtube.com” or “twitter.com”, you can just type “y” or “t”. If you’re looking for a map of San Francisco, CA, you can type “map/sf” and jump to the right place in Google Maps.

A bright bold blinking marquee disclaimer before we start: this is advanced territory. If you don’t know what sudo is and why 127.0.0.1 is special, be careful following these instructions because you may unintentionally destroy your ability to do anything at all on the Internet — including looking up instructions for getting unstuck. Also, these instructions only apply to Mac OS X and Linux, or other UNIX variants.

Redirect custom DNS hostnames to frequently-accessed sites

The file /etc/hosts on your machine is consulted by the DNS resolver before making a request to a DNS server. The idea is to add new DNS entries to the hosts file on your machine, pointing short domains such as g and t to 127.0.0.1. Now, whenever you type g or t into your browser, the hostname will be matched from your /etc/hosts file, instead of receiving an NXDOMAIN reply (i.e., this domain does not exist) from an upstream DNS provider. Since this request is received by your own machine, you can then handle it to do whatever you want, including, but not limited to, redirecting the user to the intended destination.

This HOWTO assumes that Apache is installed and running on your system with PHP and mod_rewrite support.

Modify /etc/hosts

Open /etc/hosts in your favorite text editor, and add one line for each shortcut you’d like to set up. Leave everything else unchanged. (You will need to sudo edit this file.)

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1 localhost
127.0.0.1 c # for Calendar
127.0.0.1 f # for Facebook
127.0.0.1 g # for Google Search
127.0.0.1 m # for Mail
127.0.0.1 map # for Maps
127.0.0.1 t # for Twitter
127.0.0.1 w # for Wikipedia
127.0.0.1 y # for Yelp
127.0.0.1 yo # for YouTube

255.255.255.255	broadcasthost
::1             localhost
fe80::1%lo0	localhost

You can test that this change worked, by typing in the address (e.g. http://g/ in your browser. Instead of seeing a page that says that your browser “can’t find the server ‘g’”, now you would see a page saying that your server isn’t configured correctly, or welcome to Apache, or whatever you would see if you typed http://localhost/ instead. If that worked, proceed.

Configure Apache to handle requests for unknown domains/URIs

Edit the following lines in /etc/apache2/httpd.conf. The following code shows an excerpt with lots of context around the line you need to edit. Locate the relevant section in your file.


#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/Library/WebServer/Documents">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options +Indexes +FollowSymLinks +MultiViews

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All # <-- Change this from None to All

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all

</Directory>

Locate your Apache root directory. It’s usually /Library/WebServer/Documents on the Mac or /var/www in Ubuntu. If you’re unsure, check where it is by issuing the following command in a terminal: (assuming you’re running Apache 2.x)

grep “DocumentRoot” /etc/apache2/httpd.conf

In that directory, save the following file. It should be named exactly .htaccess. (That’s htaccess with a period at the beginning, so it’s a hidden file on UNIX.) Save it as /Library/WebServer/Documents/.htaccess on Mac OS X or /var/www/.htaccess on Ubuntu.

<IfModule mod_rewrite.c>

RewriteEngine on
RewriteBase /

RewriteCond    %{REQUEST_FILENAME} !-f
RewriteCond    %{REQUEST_FILENAME} !-d
RewriteRule    (.*) /index.php [L]

</IfModule>

The actual redirection script

Here’s the script that I use for redirection, but you can roll out your own, and do anything with each request you receive. (If you do something phenomenally awesome, I’d love to hear about it in your comments.) As you can see, it’s customized to the sites I frequent, including location preferences (e.g. the Yelp shortcut takes me to Yelp San Francisco directly. The search box is preconfigured for SF.)

Save this as /Library/WebServer/Documents/index.php (on Mac OS X) or as /var/www/index.php on Ubuntu.

<?php
  $uri = preg_replace('/^\//', '', $_SERVER['REQUEST_URI']);
  switch($_SERVER['SERVER_NAME']) {
    case 'c':
      redir('http://calendar.google.com/');
      break;
    case 'f':
      redir('http://facebook.com/');
      break;
    case 'g':
      redir('http://www.google.com/search?q=' . $uri);
      break;
    case 'm':
      redir('http://mail.google.com/');
      break;
    case 'map':
      redir('http://maps.google.com/?q=' . $uri);
      break;
    case 't':
      redir('http://twitter.com/');
      break;
    case 'w':
      if ('' === $uri) {
        redir('http://en.wikipedia.org/wiki/');
      } else {
        redir('http://en.wikipedia.org/wiki/Special:Search/' . $uri);
      }
      break;
    case 'y':
      if ('' === $uri) {
        redir('http://yelp.com/sf/');
      } else {
        redir('http://yelp.com/search?ns=1&find_loc=San%20Francisco,%20CA&find_desc=' . $uri);
      }
      break;
    case 'yo':
      if ('' === $uri) {
        redir('http://www.youtube.com/');
      } else {
        redir('http://www.youtube.com/results?search_query=' . $uri);
      }
      break;
  }

  function redir($url) {
    header('Location: ' . $url);
  }
?>

That’s it, now type your shortcuts into your browser instead of the longer URLs, and there you are. If you run into trouble, leave a comment and I’ll address it.

The only downside of this approach

Redirecting involves an additional HTTP request to your machine, which introduces additional latency. The request, however, is from your machine to your machine itself, so there’s no network involved. Personally, I feel that the keystrokes saved by the technique would have taken longer to type than the shortcuts I set via this method. But you don’t lose anything if you set this up and don’t use it — just continue to type entire URLs and you will never pay a latency penalty.

The query: Protocol

1
Sep
2009

Update: I implemented this idea at http://queryprotocol.appspot.com. Comments, questions, and suggestions are welcome!

When trying to explain a concept to others over email, I often find myself linking to a search engine’s result pages for a specific query, instead of a single destination URL. These are non-navigational queries, and there is no single result that I expect to be the most important one. Instead, my intention is to provide the reader a variety of links on the topic such that s/he may draw her own conclusions, or solve their own problem — all they need is a nudge towards the right query term to use. If, over time, better search results are available for the same query, then future readers get the benefit of automatically updated results.

E.g. Q: Where can I find the latest numbers related to the spread of the Swine Flu?
A: Try [H1N1 update].

To do this today, I simply link to my favorite search engine, Google. But that does not seem fair to fans of other search engines: Bing, Yahoo!, Altavista, and others. I would prefer to use a notation that allows the reader to use their choice of search engine to obtain the results. Just as we specify our default browser and default email client, we should be able to pick our default search engine.

We have already solved the first two problems (picking default browsers and email clients) using protocol handlers in the operating system. When I pass around a link to a web page, starting with http://, I do not specify the browser it should open in. Your operating system determines that it’s a link to a hyper-text transfer protocol (HTTP) document, and invokes your default browser. Similarly, for emails, the mailto: protocol provides for an application-agnostic way to invoke the user’s default email client to send an email.

It is easy to see how a query: protocol could be implemented similarly. To point you to the search results for a particular term, I would send you the following link: (don’t click on it, it won’t work — at least as of this writing.)

[h1n1 update]

The URL that the above links to is query:h1n1+update. Note there’s no HTTP protocol marker specified. If the OS wanted, it could provide local results as well. This means that the protocol extends seamlessly to Desktop Search as well.

Syntactically, this validates as a URI. Just as the mailto: protocol handler defines standard parameter names, subject, cc, and bcc, similar parameters can be standardized for the query: protocol. These may include corpus restricts (corpus={web, images, desktop, ...}), pagination controls (start=0, num=10), or domain restricts (site=manas.tungare.name).

Implementation is simple: all operating systems and major browsers support external custom protocol handlers. They can be configured as follows:

Protocol Prefix: query
Application Name: /Path/to/Application

The application does not need to be very complicated. It’s a mere stub, which, depending upon the user’s preferred search engine, converts a URI of the form query:h1n1+update to http://google.com/search?q=h1n1+update or http://bing.com/search?q=h1n1+update and opens that link in the user’s default browser.

Eventually, if browsers understand the query: protocol, there is no need for the stub application, and users may be able to share and exchange queries and yet seek results using their favorite search engines.

(The opinions expressed in this blog post are solely my own, and may not reflect the opinions of my employer, Google.)

Personal Information Backup – Twitter, Gmail Contacts, Google Calendar, Reader

Permanent Link | Filed under: Google,HOWTO
2
Jan
2009

Make a New Year’s Resolution to start backing up your data regularly. Not just local files, but even data from the cloud. Here’s how to backup your data from a few of the most common online services. More importantly, I’ve also included instructions on how to restore from that backup.

Twitter

How to backup?

Copy this URL to a new browser window.

http://twitter.com/statuses/user_timeline/USERNAME.xml?count=10000

Then replace the string USERNAME with your actual Twitter username. Press enter to start downloading. If your browser does not prompt you with a file download box, but instead opens the file showing a bunch of text, choose File > Save As to save your backup to a secure location.

How to restore?

You cannot restore this data into Twitter (neither to your own account, nor to a different account.) But you will have access to your witticisms and interesting web links that you posted to amuse your friends. Do with it as you please.

Gmail Messages

How to backup?

Use an IMAP client such as Mail.app on the Mac, or Thunderbird on any platform. Make sure it’s configured to download and cache every email and every attachment.

How to restore?

You can access your messages from these programs even if Gmail is down. If you need to transfer messages to another account, add that new account in the same program as a new IMAP account, then drag-and-drop messages from your old account to your new account to transfer them there.

Gmail Contacts

How to backup?

Login to your Gmail / Google Apps email account, then open the Contact Manager. Click on the Export button in the top-right corner. For maximum compatibility with other applications, choose the third option for data format, vCard format. (It’s a standard format for contact information exchange.)

How to restore?

The vCard format is fairly standard. Gmail itself can read back the same file without trouble. To import into Mac OS X Address Book, simple double-click the .vcf file and let the import proceed. Microsoft Outlook also supports importing addresses from vCard files.

Import Contacts into Gmail Contact Manager

Google Calendar

How to backup?

Google Calendar publishes feeds of your calendar in the iCal format. If you save this feed to a file, you can use it as a backup. On the left side of your main calendar, there is a list labeled “My Calendars”. For each calendar that you want to backup, click on the little downward-pointing arrow next to the calendar name, and select “Calendar Settings”.

My Calendars > Calendar Settings

On the Settings page, under Calendar Details, locate the section labeled “Private Address”. Click on the button labeled ICAL and copy the URL there. Open a new browser window and paste the URL there. This will start downloading a file; save it to a safe location — this is your calendar backup. Lather, rinse, repeat for each calendar you want to backup.

Calendar Details > Private URL > ICAL

How to restore?

The iCalendar format (also abbreviated as iCal or .ics) is a standard calendar format. You can import the backed up calendar file into Google Calendar, Apple iCal or Microsoft Outlook simply by opening it.

Google Reader

How to backup?

Login to Google Reader, then come back here and click on this link: Export Google Reader subscriptions as OPML. Save the file that your browser will prompt you to download. This is your backup.

How to restore?

Google Reader and lots of other feed readers know how to import OPML files. In case of Google Reader, go to Settings > Import/Export to import it back. For desktop software, try looking for an “Import from OPML” menu item somewhere.

Need instructions for more services? Write a comment and I’ll try to provide them.

Email should have Expiration Dates

2
Nov
2008

The entire idea behind this blog post has been summed up in the title, so all I need to do now is to explain why I think email should have expiration dates, and how that would make personal information management better.

Email, as we all know, started off as a way of sending short messages to colleagues within a department. It has since evolved into a monster of a tool that does everything it was never designed to do. The paradox is that it is exactly the kinds of messages that email was designed to handle that cause me the most trouble these days.

  1. I often receive email from my friends about meeting up for lunch. This is important, but only for that particular day (and that too, if I receive it before lunch time).
  2. My research collaborators send me email when a paper submission deadline is near, with the draft attached to it. Those emails are not nearly as important after the deadline.
  3. My friends and I exchange travel plans over email, but is it as useful after the trip is done?

These are the kinds of messages I’m talking about: important but time-sensitive. Then there are others which are not really important, but simply one-time notifications that I can take action on and then forget (“bill is due in 2 days”, “X added you as a friend”, “your order was received”, “your package has shipped”, “free donuts in break room”, “we are not meeting today”, etc.)

Why do they linger on in my mailbox for years? They become indistinguishable from the really important email that I need to save for years, such as some very interesting and intelligent discussions I have had with others. Note that I’m not including spam in this discussion, because in my opinion, there are adequate spam-filtering tools circa 2008 that perform well enough for most users for the most part with an acceptable false positive rate. Not perfect, but acceptable.

The Keeping Problem

Email is no longer ephemeral — people hold on to their email for years. This is what results in the Keeping Problem in Personal Information Management: there is so much of information coming at us that we don’t want to spend the time to decide what to keep and what to trash, so we end up keeping all of it. We hope we never have to do spring cleaning, and instead rely on search to find what we want.

Filing is not the answer

Many people file and tag their email, but the question is, is the cost of doing so (time as well as attention) worth the payoff at the end? Consider the two alternatives: spending 10 minutes each day filing your email, versus spending an hour a month looking for that one email. Pretty soon, the second alternative starts looking better while swimming in a sea of email with no signs of abating.

Same needle, bigger haystack

The bigger the haystack grows, the harder it is to find the needle. The solution is to reduce the size of the haystack. Automatically. Most other solutions empower the user to filter, sort, file, tag and do other sorts of things to their email that do not scale very well. That’s where Email Expiration Dates come into play. For it to work, they need to be (1) defined and (2) honored.

Defining an Email Expiration Tag

Email expiration tags can be defined in several ways by several entities that handle the email message at some point of time in transit.

  1. By the sender of that email who cares about the recipients;
  2. By the email client (MUA) used by the sender, automatically inferring from certain common-sense words; e.g. subject contains lunch and body is less than 100 bytes;
  3. By the email server software that intelligently tags email based on common patterns seen across multiple users;
  4. By the recipient’s email client, based on heuristics;
  5. By the recipient’s email client, based on a user-defined rule set;
  6. Or explicitly by the recipient in a spring cleaning session.

Honoring an Email Expiration Tag : Fully standards-compliant

RFC 822 allows custom tags (Sec. 4.7.5). These are commonly referred to as X- headers, since the specification requires that all such tags be prefixed with “X-”. Many applications built on email make use of such tags: mailing lists use the X-List-* headers to specify the list name, subscribe URL and unsubscribe URL in a mail message. Spam filtering software such as SpamAssassin assigns a score to each email, saved as an X- header. Mail clients are free to interpret these tags as they see fit.

An expired email will not be automatically deleted if the user does not want it to be. This is important for archival purposes and to satisfy the stringent reporting requirements of the Sarbanes-Oxley Act. But now the user can make a one-button choice about whether or not expired emails be deleted, archived, moved away or kept around.

With help from legitimate bulk email senders (not spammers)

Bulk mail such as Facebook notifications could have expiration dates set to “one week after receipt”. Bill reminders could set the expiration date to be “2 days past deadline” (and then send another notification if payment is not received by then.) Donut announcements could expire at the end of the day. Talk announcements could expire at the end of the talk.

Fixing the post-vacation blues

Returning from a vacation is no longer refreshing, as we are thinking about the sheer volume of email we need to process once we get home. If I was on vacation when the donuts were on the table, I should not be bothered about it when I return. Go away! If it’s an invitation to a talk that happened while I was away, I don’t need to hear about it now.

What will it take for adoption?

Defining a standard is no use if it isn’t used. The best way for such a solution to be adopted is for a major email provider implement it themselves, perhaps in a limited beta? On the interface side, this requires two additions: one for sending, one for processing received messages. The widget at the sender’s end is simply a calendar picker, or a drop-down with relative dates (“tomorrow”, “next week”, etc.) At the receiving end, it’s a three-way radio button that lets users “Delete”, “Archive” or “Leave alone” expired messages.

Till then, it’s back to manual spring cleaning. Oh well.

Acknowledgments: I have had several stimulating discussions with my advisor, Manuel Pérez-Quiñones, and my colleague, Pardha Pyla, about our respective email filing strategies, (that mostly began as venting sessions). This idea no doubt borrows from my analysis and conclusions based on some of those conversations.

Google all the way … in a scary way!

1
Apr
2008

Google recruiters use Google to search for recruits for Google. And how do I know? I found out because of another Google product. The irony is that I’ve been at Google, and I will be at Google, so I’m not exactly who they’re looking for. So, all this, and the search was a failure, then?

Here’s what happened: I’m in the habit of checking my web server logs every once in a while to see which pages are popular, where my users are coming from, what keywords they type into search engines to find me, and sometimes just to stalk my stalkers. ;) For this, I use two great tools, StatCounter and Google Analytics. (StatCounter is the better of the two, by the way, but they have a last-500-visitor limit, so I need to check my stats at least daily.)

Today, the following entries appeared in my logs:
(inurl:resume or intitle:resume or inurl:cv or intitle:cv) (c or c++ or java) “computer science” “software engineer” (415 or 650 or 925 or 510 or 408 or 369 or 669 or 707 or 831 or 916 or 530) -jobs -job

The IP addresses show that the request came from Google’s Mountain View headquarters. The query shows exactly who they’re looking for. Interestingly, they seem to be hiring locally (the numbers in parentheses are all telephone area prefixes in the San Francisco Bay Area.)

There’s so much Google involved in this story, it’s scary.

TGIF (apparently) Works!

27
Feb
2008

It’s no secret that Google hosts an employee-only event every Friday where we get to talk to Larry, Sergey and Eric directly (though the contents of each TGIF session are confidential.) In June, I walked up to the mic and asked them why Google wasn’t the default search engine in Opera Mini, the #1 mobile browser. It used to be #1 at that time; today, perhaps Mobile Safari has taken over that spot.

Today, I heard that this has happened. Seems like a good thing that they actually take feedback from interns seriously, and/or maybe I’m taking too much credit. :) In any case, I’m happy, because the older Opera Mini didn’t even let you customize the home screen to pick a search engine. I hope that has changed too (user choice is good.)

(Note: Both snippets mentioned here are public news; nothing confidential was released in the making of this post.)

Press Coverage of my Intern Work at Google

7
Oct
2007

It’s been exactly a month since my feature launched on Google Books. I went on an ego-surfing trip to see who had covered it. Here’s what I found.

You know what I did last Summer?

6
Sep
2007

This, covered at the Official Google Book Search Blog.

While it is easy to share links, photos, videos, and opinions on the Web, sharing books with your friends online used to be tough — and tougher even, to share individual clippings from a book. This summer, I worked with the Book Search team to add clip-sharing features to Google Book Search.

You can now highlight a section of text in any public domain book in Book Search, create a clip from it, and share it with the world. You can post your favorite clips to your blog along with a personal annotation, collect them in a Google Notebook, or share them with friends anywhere you decide to embed the link. Your clip looks exactly as it appears in the book, or if you prefer plain text, we have that too.

Also at the Official Google Blog, about collecting, sharing and discovering new books.

We’ve also launched a way to let users, select, copy and embed segments of public domain books (like the Newton quote) in any web page. We hope to make it as easy to blog and quote from a book as it is from any web page. Like many innovations at Google, a stellar summer intern worked on this.

Of course, no project is a single-person effort: Bill Schilit, my mentor; Nathan Naze, JavaScript God; Adam Mathes, Venu Vemula, and the rest of the Book Search team laid the foundation and were an integral part of this feature.

Riding the Google “Conference” Bike

16
Jun
2007

Everyone agrees meetings aren’t fun, but what if you’re discussing matters with your teammates while pedaling a 7-person bike furiously on the streets of Mountain View? Forget the discussing matters part, but the rest of it sure is a lot of fun.

Just don’t call it the party bike; it’s the “conference” bike. Google’s newest acquired toy is a 7-person bike, much like New York City’s Party Bike [link broken at the time of posting]. It can be scheduled as a conference room for holding meetings and as a team-building exercise (no pun intended).

Our team rode the bike to the nearby Shoreline Lake on a hot Friday afternoon. Just for kicks, we rode it up a hillock and let it go full speed downhill. Here’re some action shots!

The Conference Bike
chiu-ki-and-i.jpg


A Meeting with the Father of the Internet

15
Jun
2007

It’s not often that one gets to be in a meeting with Vinton Cerf — who’s credited as the “Father of the Internet”, and holds the official job title of “Chief Internet Evangelist” at Google. (No, I’m not kidding.)

Vinton Cerf, Father of the Internet

So when I was invited to a research meeting with him, my mentor Bill Schilit, and others at Google, I was totally in awe. Of course I can’t discuss what we talked, but the little kid in me was awe-struck enough to want to write a blog post simply mentioning it! ;)

I remember having seen him first about 9 years ago. I was a sophomore at Bombay, and I heard from the ACM community that Vint Cerf was to give a talk at SNDT, Churchgate. It was examination time, and as hard as I tried, I couldn’t get anyone else enthused enough to make the hour-long journey to listen to Vint Cerf’s talk. In an engineering school with over 800 students, I had expected to find at least a few takers. None. Nada. Zilch. Everyone was too concerned about their examinations to find time to listen to the Father of the Internet. I gave up, took the train, and went to the talk, all alone. It was totally worth it, I recollect his ambitious Interplanetary Internet project back when he was at MCI.

I had never imagined that 9 years later, I would be attending a meeting with him. It’s not a dream come true, because I had never even dreamt it would be possible to share a table with Vinton Cerf.

Timezone issues in Google Calendar widget fixed. Or so I think. Maybe.

1
Mar
2007

Lots of you reported timezone errors in my Google Calendar Dashboard Widget. I thought I’d fixed it in 2.0 with some changes to the date parsing code, but it turned out that only worked for certain timezones. So here is another version with solely a timezone bug fix. I believe this should be the end of all troubles, but who knows.

Go forth, download v2.1, and let me know how it goes! If you still encounter any issues, please let me know.

If you’re a programmer, you might appreciate knowing what was wrong: the JavaScript parseInt function expects a radix as its second argument. (Radix is the base to which numbers should be parsed, e.g. decimal, octal or hex.) If you don’t provide a radix, the function guesses a radix based on the string you pass to it. If the number starts with 1-9, then the radix is assumed to be 10; if it’s 01-09, then it’s octal, and 001-009 are parsed as hex. So the timezone parsing was being affected by this for all the 01-09 hours of difference. Long story short, I added the radix explicitly, and things should be OK now.

Google Calendar Dashboard Widget Updated to version 2.0

15
Feb
2007

This long-pending update to my Google Calendar Dashboard Widget is now finally ready!

Changes in Version 2.0

  1. There were some problems handling time-zones in version 1.0 for some users. These issues have been (hopefully!) fixed in version 2.0.
  2. A highly-requested feature was to be able to look-ahead several days into the future, not just today and tomorrow’s events. Version 2.0 lets you preview up to one week ahead of today.
  3. The top part of the widget now features a button that takes you to Google Calendar in a browser. Trivial, yet highly useful, feature.

Download this free update if you’re using version 1.0. And keep the comments flowing in!

Related posts: Announcing the Google Calendar Dashboard Widget.

From the Desktop to the Phone … Seamlessly

16
Nov
2006

Google just announced a new feature in Google Maps: Click to Call. When you find a business on Google Maps, you can ask to be connected directly. Google then calls you on the number you provide, and places a call to the business at the other end.

This is yet another example of seamless task migration. The user’s ultimate goal in locating a business is to get in touch with them. The most common way to do this today is to call using a phone (at least as long as Voice-over-IP is not as ubiquitous as cellphones and land-lines). Lo, Google bridged the gap. End-to-end support for a user’s tasks using multiple devices is a challenge that’s getting its due attention only recently.

Hopefully, we will soon be able to do the same with phone numbers all over the Web. Imagine a button on my website that says, “click to call me”. Or, a button on my photo albums page that says, “view as a slideshow on the living room TV”. Or being able to press a button on your car radio to “read more about the currently-advertised product once I’m back home”.

Announcing the Google Calendar Dashboard Widget

24
Oct
2006

In the tradition of writing gadgets for Google Desktop and other Google properties, here’s one more from me: the Google Calendar Widget for Mac OS X Dashboard.

Since my switch to the Mac, I’ve been missing Google Desktop and using Dashboard more and more. And a calendar’s a nice thing to keep an eye on from time to time. So, without much further ado, here’s the gadget, oops, widget!

Google Calendar Dashboard Widget Screenshot

Lie Low, the Airplane’s Coming …

13
Jun
2006
Geo Developers Day
Geo Developers Day
Geo Developers Day

No, this isn’t a warning from Winston Churchill from the World War II times, this is when Google schedules aircraft fly-bys over the Mountain View Headquarters for Geo Developers Day. Google had invited geo-developers to get together and discuss cool things that they were doing with Google Earth & Google Maps. (Oh, BTW, check out the new Google Earth for Mac and Linux!) As part of this event, the plan was to have an aircraft take aerial photos of the campus to appear on Google Earth and Google Maps shortly.

A bunch of us interns, as well as some of the guests, joined in to get ourselves more than a pixel on the map. We all lay down on the patio in an effort to capture more “screen real estate”. The aircraft made a few zigzag scans, so I’m holding my breath to see what they captured.

Meanwhile, here’s what I captured. Much less impressive than a bird’s eye view, but interesting nevertheless.

Marathi Newspaper “????” Reports on Google Desktop

24
May
2006
Sakal Article (Paper Version)

????, (“The Morning”), a popular newspaper in my native tongue, ran a piece on Google Desktop. I’m not a regular reader, but my attention was drawn to it by several friends and family, who noticed my name mentioned in it. Now, while I’m not really sure how they got the info, or even where they got it from, it seems to have originated here in California on Google’s Press Day. Well, Andy Warhol was right!

Paper Version, Scanned (closer to original format)
Electronic Version, PDF (more readable)

An Interesting Email

Permanent Link | Filed under: Google
18
May
2006

I received an interesting email this morning:

From: Pakko Systems <******@yahoo.com>
Subject: Help with Yahoo Calendar
Date: May 18, 2006 9:18:48 AM PDT

I see u have a Nice Yahoo Calendar CVS converter to ICAL,
but I need one from ICAL to CVS to use it on yahoo, Im not
ready to kiss the ass to Google people. 

please help me

I had to write back to him:

To: ******@yahoo.com
Subject: Re: Help with Yahoo Calendar
Date: May 18, 2006 1:55:16 PM PDT

It is unlikely that I will write one, it is
not high on my priority list right now.

P.S. I work for Google. :-) 

Google Desktop now includes Google Calendar Gadget

10
May
2006

A new version of Google Desktop released today. (For those who came in late, I worked on Google Desktop last year, and have been writing plugins for it for some time now.) When Google Calendar released, I wrote a plugin for it too.

Since my plugin was licensed under an open-source license, Google added features to it and included it in the official download. What’s more, I even get credited in the source code. Go, Google! — kudos to the nice people in the Desktop/Calendar teams.

The Birth of Social Calendaring

Permanent Link | Filed under: Google,Thoughts
19
Apr
2006

With the release of Google Calendar, a lot of people seem to be talking about the intuitive interface, the prettiness, and of course the fact that it is AJAX — new and improved, of course. But the blogosphere seems to be overlooking the broader implications of one single feature of Google Calendar: Shared Calendars.

Shared calendars, as many will jump to point out, are nothing new. Corporate calendars are often shared, and so are resource-reservation calendars such as conference room calendars. The chief aim of these types of calendars is either to get people together (meetings), or prevent them from getting together (i.e. to prevent double bookings).

A third type of calendar has just been brought forth by Google. A calendar that everyone can edit. A calendar that everyone can put events in, and a resulting calendar that has much more value to everyone than a personal calendar. If you’ve heard these words before, you will realize that I could also be describing a Wiki. Google Calendar seems to me a Calendar Wiki — where everyone pools in their two cents, and reaps millions together.

I will be attending a conference in a few days (CHI 2006, if you must know) and I looked at the program schedule. It’s a whopping 108 pages long, in PDF. There is no way I can enter all that information into a calendar for copying to my iPod or viewing in iCal (as has been my workflow so far.) But if even a fraction of the thousands of attendees adds in the event description for their own paper, or their own presentation, the task is not so daunting after all.

On the day of the conference, I could happily download a copy onto my read-only PDA and not have to fumble around with paper calendars or program schedules 108-pages thick.

Welcome to the world, social calendaring!

Update: Lauren pointed out that her calendaring solution has been doing this for some time already. Irrespective (and there will be other solutions too), I do believe the Google brand has the potential to do to calendaring what GMail did to webmail.

Goocal = Google Calendar + Google Desktop

Permanent Link | Filed under: Google,Release
14
Apr
2006

Google Calendar released yesterday. And everyone knows about it today!

But do you know what’s happening today? Especially in your own life? Go track your Google Calendar events in Google Desktop with Goocal. Free as in beer, free as in freedom, as everything else has been. Look out for more features soon!


Next Page »

Bookmark and share using ...

Delicious Facebook Digg Google Friendfeed Stumbleupon Twitter Linked In