2007 Jul 4, 10:58Hackdiary
I really enjoy reading Matt Biddulph's blog
hackdiary. An entry some time ago talked about his
Second
Life flickr screen which is a screen in Second Life that displays images from flickr.com based on viewers suggested tags. I'm a novice to the Second Life scripting API and so it was from this
blog post I became aware of the
llHTTPRequest. This is like the XMLHttpRequest for Second Life code in that it lets you make HTTP requests.
I decided that I too could do something cool with this.
Translator
I decided to make a translator object that a Second Life user would wear that would translate anything said near them. The details aren't too surprising: The translator object keeps an owner
modifiable list of translation instructions each consisting of who to listen to, the language they speak, who to tell the translation to, and into what language to translate. When the translator
hears someone, it runs through its list of translation instructions and when it finds a match for the speaker uses the llHTTPRequest to send off what was said to
Google translate. When the result comes back the translator simply says the response.
Issues
Unfortunately, the llHTTPRequest limits the response size to 2K and no translation site I can find has the translated text in the first 2K. There's a flag HTTP_BODY_MAXLENGTH provided but it defaults
to 2K and you can't change its value. So I decided to setup a PHP script on my site to act as a translating proxy and parse the translated text out of the HTML response from Google translate. Through
experimentation I found that their site can take parameters text and langpair queries in the query like so:
http://translate.google.com/translate_t?text=car%20moi%20m%C3%AAme%20j%27en%20rit&langpair=fr|en
. On the topic of non US-ASCII characters (which is important for a translator) I
found that llHTTPRequest encodes non US-ASCII characters as percent-encoded UTF-8 when constructing the request URI. However, when Google translate takes parameters off the URI it only seems to
interpret it as percent-encoded UTF-8 when the user-agent is IE's. So after changing my
PHP script to use IE7's user-agent non
US-ASCII character input worked.
In Use
Actually using it in practice is rather difficult. Between typos, slang, abbreviations, and the current state of the free online translators its very difficult to carry on a conversation.
Additionally, I don't really like talking to random people on Second Life anyway. So... not too useful.
personal translate second-life technical translator sl code google php llhttprequest 2007 Apr 18, 11:22For a trial period the BBC will open its archive online for free. Hopefully this is the start of a trend otherwise in the future the only freely available content will be reruns of Absolutely
Fabulous.
bbc television archive article ip 2007 Apr 17, 11:45Opera (
the fifth most popular web browser) has a new feature named
Speed Dial (video of it in action). Whenever you open a new tab you get your Speed Dial view which consists of nine thumbnails of user-settable
pages. Its like a quick-favorites that appears every time you open a new tab. I think this is a neat idea and was considering how I might do that in IE7. The following is my hack-y and ugly but no
coding required version of Speed Dial for IE7. I like my hack and I'm about to expound upon it in unnecessary detail so skip to the last paragraph if you're afraid of losing interest.
By default in IE7, whenever you open a new tab you navigate to 'about:Tabs'. As noted in wikipedia the result of
navigation to 'about:Tabs' is determined by values in the registry. Specifically, values in the key in
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AboutURLs". Usually this fact is exploited by
malicious software to hijack
"about:blank" and show you ads but we can hijack it too in order to display our Speed Dial-ish page.
Of course since this is a code-less hack we've got limited options on what to change 'about:Tabs' to display. It should have the following requirements.
- Something local so that our 'about:Tabs' doesn't disappear when we go offline and so that its relatively fast.
- The user should be able to modify its content.
- Show links that the user uses.
- Show thumbnails of those links
- Provide easy to use drag and drop interaction and generally look cool.
Now, I use del.icio.us which allows me to store all of my favorites online and which provides RSS feeds that list my saved links. New in IE7 is an
RSS platform that will, among other things, cache RSS feeds locally. So, by pointing
about:Tabs to my del.icio.us feed 'http://del.icio.us/rss/sequelguy/quickreference' I get (1) from IE7's RSS support, and (2) and (3) from del.icio.us. Of course requirements (4) and (5) are missing
but hey, I said this was ugly.
In summary, if you change the registry value "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\AboutURLs!Tabs" to point to an RSS feed of your favorites you can get a hack-y version of Opera's
Speed Dial. I should note that although its referenced on pages such as wikipedia changing your 'about:Tabs' URI in the manner I describe is not documented and not supported by Microsoft. There could
be all kinds of horrible repercussions from this change of which I'm not aware. Yeah, actually you know what? Forget I said any of this. Pretend I never wrote it...
browser technical hack 2007 Mar 19, 11:23This is a free online book on using Subversion the version control system.
reference book subversion svn tutorial documentation free download howto 2007 Mar 6, 12:38Online cookbook of medieval recipes.
food history reference recipes medieval cooking neat-fp 2006 Apr 15, 6:29Stick Figure Online RPG
free game humor internet web rpg 2005 Aug 16, 10:46vim tools editors 2005 Jul 29, 10:59Convert between Unicode, punycode, and IDN
unicode punycode idna tools web 2005 Apr 9, 6:41Discover the background of your favorite English words
reference dictionary etymology english search language tools