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 https://
, 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.)
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 https://google.com/search?q=h1n1+update
or https://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.)
This is a collection of tips compiled for a seminar series at Virginia Tech for Computer Science Grad Students in Fall 2008, compiled by Manas Tungare, with contributions from (in alphabetical order) Manuel Pérez-Quiñones, Rhonda Phillips, Pardha Pyla, Naren Ramakrishnan, Bill Schilit, and Andrea Wiggins.
</td> | </td> </tr> </table> 1. IntroductionThis document is extremely terse, so you don't end up spending too much time reading it. 2. Getting Started2.1. ClassesIn your first few semesters of grad school, you will be required to take classes. They provide an opportunity to learn about new areas, and gain some depth in your area of focus. But grad school is not about getting an A in every class. Don't ignore research in favor of getting good grades. Be clear about the requirements of your program: you don't want to discover that you missed taking a required class and have to take it towards the end of your Ph.D. Quote from a professor (used with permission):
2.2. Choosing an Advisor |
By popular demand, my custom LaTeX styles are now available for download. (All of them have been dedicated to the public domain, I disclaim all copyright.)
There are four for now, but the set will grow. The first lets you use OpenType fonts (which is pretty much any system font); the limitation is that this works only with a single distribution, XeTeX, available only for Mac OS X, and a new experimental build for Linux. A second style typesets all chapter titles, sections, subsections and subsections in a sans-serif font (instead of the default serif). Very effective when used in conjunction with the OpenType style.
The final two adjust margins to require less paper for draft prints and such. Be good, be green.
How often have you found yourself calling a friend to get the phone number of a mutual friend? And then having to hold the phone while your friend pulls up the contact list on their phone, then recites the number to you, and then you write it on paper because your phone won't let you add contacts while you're on a call, and then you misplace the number you wrote on paper, ad nauseum. Why isn't there a single button that says "Send this Phone Number to the Current Caller"?
It's a common problem. You're out and about, and realize you need to call a specific person, but you don't have their phone number (or more often, you have it on your desktop computer, or your laptop, but that doesn't do you any good in the current situation.) So you decide that the best thing to do is to call a mutual friend and ask them.
When they receive a phone call from you, they're fumbling to hold the call while they look in their address book. (That is, if they're lucky, and if their phone actually lets them open the contact list while they're on a call.) More often, what happens is that they tell you to hang up while they consult their address book. And then you have to hunt for a piece of scrap paper because your phone won't let you add a number to the list like that.
What the world needs is a button next to each phone number in the contact list that only appears whenever you're on a call. The button, when pressed, sends an SMS from you to the current caller, and contains within it the information from the contact record you just selected. It doesn't have to be too fancy, a two-line VCF record should do nicely.
If the recipient's phone understands this method of contact transfer, it can prompt the user and import it automatically. If not, the user can still read the SMS herself, and dial the number. No more paper, no more fumbling, no more "let me call you back".
It's so easy, a caveman could do it. If only phones implemented it!
I wrote this recently, not as a blog post, but for another purpose. I figured I'd post it here like I do everything else.
Re•search: noun. Investigation or experimentation aimed at the discovery and interpretation of facts, revision of accepted theories or laws in the light of new facts, or practical application of such new or revised theories or laws.
—Merriam-Webster Dictionary.
The last part of that definition has always been the chief motivator for me in my research — practical application. While all research seeks to discover universal truths and deeper meaning, I strongly believe that researchers have a responsibility to contribute to society in other tangible ways as well.
Just as Gutenberg's invention of the printing press in 1439 made literary works accessible to everyone, the Internet is likewise speeding up the propagation of knowledge now and will continue to do so in the decades to come. We are on the brink of a cultural revolution where ideas, prototypes, discussion and research know no boundaries of location or time. The Free Software Movement is promoting users' freedom to understand and explore computer programs. The Creative Commons project encourages authors, scientists, artists and educators to distribute their creations under licenses that foster the sharing of ideas, encourage discussion, engender a culture of openness, and speed up innovation. This provides enormous opportunities for researchers to collaborate in real-time across institutions, countries and continents, and to serve the community by disseminating their research results via public blogs, videos, slides, prototypes and designs.
As a researcher in Human-Computer Interaction at the Dept. of Computer Science at Virginia Tech, I have developed several tools and prototypes that would be of benefit not just to researchers but also to computer users. It is by studying their habits that I designed these tools — to them, I owe these tools. I work in the area of Personal Information Management (PIM), and study how users access and manage information such as files, calendars, email messages, contacts and bookmarks on multiple devices. I release all such tools and software to the world at my web site under licenses that permit anyone to inspect the source code, build upon it, and benefit from it.
In the process of my research, I developed a program to access Google Calendar which now has over 25,000 users. A calendar converter program I wrote is used by an average of more than 200 users per day. During Sustainability Week 2008 at Virginia Tech, I released a Blacksburg Transit Schedule application for cell phones to encourage Blacksburg citizens to take the bus instead of driving. It is used by about 300 users every month and growing.
In the spirit of working on real products that are used by real people, I interned at Google three times during my Ph.D. (2005, 2006, 2007.) In 2007, my project enabled users of Google Book Search to clip personalized content from books and embed that into their own web site or blog. This enables teachers to excerpt from literary classics for their class home page, for literature scholars to debate the nuances of texts, and for commentators to dissect parts of books. My intern work was covered by several news outlets, chief among them, at Google's Corporate Blog.
Academia encourages published work—publish or perish, they say—while original contributions such as new ideas and untested directions are undervalued in the traditional ways of evaluating research. The Internet changes that too. Several times when I have come up with ideas that may or may not be viable research projects, I have written about them on my blog. The public scrutiny and invaluable feedback I've received made it easy to separate the wheat from the chaff. My advisor has always been supportive of those ideas that were encouraging research directions: the latest among them resulted in a paper that has been nominated for the ACM SIGCHI Student Research Competition 2009.
An area that I have recently been concerned about is the open publication of raw data sets. I perform human experiments which are reviewed by the Institutional Review Board (IRB) for ethical compliance. There is inherent tension between the privacy implications of human experiments and the Open Science dream of being able to publish all experimental data publicly so that others may analyze it in novel ways. I plan to investigate the ethical, moral and legal responsibilities of such an endeavor, recognizing that we as researchers owe two allegiances: to our experiment participants and to the scientific community, in that order.
I am happy to be a researcher at a time in our history when competitive collaboration trumps closed confidentiality. Science and innovation can only progress faster when information is freely shared among researchers, scholars and citizens.