Google sometimes turns off features. One such feature that I remember fondly is that at the bottom of Google’s search results, we offered nine other search engine suggestions. The idea was if you didn’t find what you were searching for on Google, you could click on the other links and easily run the same search somewhere else. Luckily, due to an April Fool’s joke about the Mentalplex, you can still see what these links looked like:
Many of these search engines consolidated or changed focus over time. Plus I’m guessing that every search engine in the world wanted to be on the list, which must have been really annoying for whichever Google person had to maintain that list of links. I think the list of other search engines dwindled down and eventually Google just turned the feature off.
Recently I was describing this feature to Tiffany Lane, another engineer at Google, and she had a great idea. Why not recreate this search feature on Google with modern search engines and websites? Because of the pain of maintaining an “official” list, we probably couldn’t turn this on for every user (plus not every user wants a lot of extra links added to their search results). But why not provide a completely unofficial option that people could install?
Thus was born Retro Links, which is a Greasemonkey script to add new search options to Google’s search results page. When Retro Links is installed, it looks like this:
Unlike the original feature, Retro Links lets you select which search engines to show from 42 different websites and search engines, then saves those preferences. It’s also very easy to add a new search engine in the JavaScript file.
To install Retro Links you will need to be using Firefox and have Greasemonkey installed. Once Greasemonkey is running then you can click on the link above and you will be prompted to install the script. To see that it is working you can do a Google search – the links will be inserted near the bottom of the Google search results page.
Configuration
Configuring Retro Links is really simple. Suppose that you want to change the default Amazon link to search on Yelp. Just click on the [+] link to the right of the search engines and select Yelp from the drop-down box:
When you’re happy with your search engines, click the “Save” button to save your preferences.
Questions
What if the site I want is not one of the 42 options?
You can add more sites to the options by making a simple code change. To edit the code go to Tools -> Greasemonkey -> Manage User Scripts, select Retro Links and click the Edit button. Simply add the name and url of the new site to the RL_LINK_OPTIONS array, following the examples that are already there.
How do I turn on/off the update notification?
The script checks to see if a newer version is available once per day. If an update is available a red box will appear in the bottom right corner of the page with a link to download the latest version. If you want to stop checking for updates go to Tools -> Greasemonkey -> User Script Commands and select Retro Links -> Never check for updates. To start checking again select Retro Links -> Check for updates daily.
Disclaimer
Finally, Tiffany wanted to make sure that I included this quick disclaimer: “Retro Links is not an official Google project. I chose which links to include based on my personal preferences and web surfing habits. These decisions do not represent the opinions of my employer.” Tiffany, thanks for writing this great script!
I recently completed a huge “Media and Journalism” project: I transcribed over 500 hours of the Nancy Grace TV show on CNN. It took a long time, but here is an exhaustive Wordle tag cloud of all the words used in those 500+ hours of television:
It appears that all 500+ hours consist of those six words repeated over in different combinations.
I’m not serious and didn’t really watch or transcribe 500 hours of Nancy Grace. In reality, Nancy Grace uses more and different words. It only feels like every sentence is “little Caylee” or something similar.
I just installed a “hello world” Chrome extension from this Chrome Extension HOWTO page. When you surf to www.google.com, the Google logo is replaced with a Lolcat:
Here’s how to write your own Google Chrome extension in three steps:
1. Install the developer-channel version of Google Chrome. I don’t know if this is 100% necessary, but new support for plugins will probably show up in the developer version first. You can read instructions on how to switch to the developer version. It takes maybe 3-4 minutes — you basically run a small program to indicate your preference. In case you’re worried that the developer version will crash a lot: I’ve been running the developer version for months and haven’t seen any major issues. The developer version also gets new features (such as pressing “F11″ to get full-screen mode) way before the beta/stable releases of Chrome. I’m using version 2.0.170.0 of Chrome and the “hello world” extension worked fine for me.
2. Read the initial documentation. This is a brand-new feature, but you can already start hacking. Extensions currently have very Greasemonkey-like functionality: you identify which web pages should be modified, plus JavaScript to be added to those pages. By default, the extension’s JavaScript runs after the page loads, but you can specify that the extension’s JavaScript should run before the page loads. Right now, you can only load one JS file, but that could change in the future. You also can’t currently load Cascading Style Sheets (CSS), but that might also change.
I like several things about the extension framework:
- Your plugin has to have a unique identifier (40 digit hexadecimal number). Given an identifier such as “00123456789ABCDEF0123456789ABCDEF0123456″, an extension can include an image such as foo.gif and then easily access that image by using a full path such as “chrome-extension://00123456789ABCDEF0123456789ABCDEF0123456/foo.gif”
- The “content script” (the JavaScript of an extension) gets its own global scope separate from the web page, so you don’t need to worry about global variables conflicting. But you can still get access to the web page’s global variables using the “contentWindow” variable.
- Bundling your extension directory into a “.crx” Chrome Extension file is as simple as running a short Python script.
- Chrome also supports binary NPAPI (Netscape Plugin Application Programming Interface) plugins.
The Chrome extension manifest, which has metadata about your extension such as name, version, etc., looks much simpler to me than how Firefox wants extensions to be packaged. That’s a big plus in my book, because you spend most of your time writing code and not worrying about packaging up your plug-in. On the down side, I didn’t see any support for internationalization, which is one of the benefits of Firefox’s more comprehensive way of packaging up plugins. Another limitation of the current Chrome extension spec is that you can’t do much other than modify pages via JavaScript. And I didn’t see a way to introduce new widgets into the actual “chrome” of the Chrome browser.
3. Try it out! If you’re running the developer version of Chrome, you can install the “hello world” plugin from the extension howto page just by clicking to download the .crx file. Then type “chrome-ui://extensions/” and you’ll see something like this:
Once you see how it works, just start hacking around and see what happens. Remember, this howto document is only a few days old. I’m sure the Chrome team is thinking about ways to add more functionality to extensions, but the current developer version of Chrome already lets you do a lot of neat things.
One more nice thing: it looks like installing extensions doesn’t require you to restart the browser. And a hat-tip to Google OS for pointing out this document.
Expect light blogging for a week or so because I’m traveling. I posted my 2009 travel schedule, but I’m doing a keynote at PubCon in Austin and then I’ll stick around for South by Southwest. It’s my first time at SXSW, so if you see me, say howdy!
For the PubCon keynote, we’re going to try something different. I’ll talk for 20-30 minutes, but we’ll also do a question and answer session where we take questions from the audience, from Twitter, and from this Google Moderator page.
If you can’t attend PubCon, we’ll still feed your search-info addiction with some videos. Peter Linsley just posted his recreated Google Image Search presentation from SMX West. I took questions recently and so you can watch threedifferentvideos that I did. For example, here’s a video about nofollow:
We’ll be releasing one new video each weekday for a while, so keep your eyes on the new Google webmaster videos channel on YouTube.
00:00:07.000
Hi everybody. Welcome back to another video. We’re doing this thing where when we speak at a conference
00:00:12.180
and we talk about something substantial, not just questions and answers, we talk through our presentation later
and it only takes a little bit of Unix command-line magic to turn that into a file like this:
<a href=”http://www.youtube.com/watch?v=Cm9onOGTgeM#t=00m07s”>Hi everybody. Welcome back to another video. We’re doing this thing where when we speak at a conference</a>
<a href=”http://www.youtube.com/watch?v=Cm9onOGTgeM#t=00m12s”>and we talk about something substantial, not just questions and answers, we talk through our presentation later</a>
If you run that over your entire caption file — boom — you have a clickable transcript of your video. For the text below, click on any phrase you’re interested to and you’ll be whisked away to YouTube in approximately the right place to hear me say that phrase.
Pretty fun, right? With a little more effort, you might be able to get the links to update an in-page embedded video instead of using static hyperlinks. Specifically, there’s a “seekTo” function in the YouTube JavaScript Player API. But right now I’m too lazy to dig into it.