Travis's lame ol' blog

yay, Travis finally changed his blog!

- Tuesday, April 13, 2004

Carpal Tunnel

UT2004 is fun, ow.

Mr. Cranky Pants

Who would scale two barbed-wire fences and climb into an alligator pit to steal an alligator named 'Mr. Cranky Pants'? These morons. Amazingly it's the third time an alligator has been stolen from the park in the past two years.
KS

"We're not using these robots to hand out flowers"

Wired has a neat little article on combat robots. Pretty sweet that technology will save the lives of at least our own soldiers, but I think I'd rather see more non-lethal solutions.

- Friday, April 09, 2004

Who cares about Esperanto?

Apparently these people do. Plus, those are just the one's registered with Lernu. I'll have to get back into the swing of studying it one of these days. (btw: my name on Lernu is "Travis", real original I know)
eo

IE sucks?

IMHO, yes, but now I can complain directly to microsoft. There are also some good hacks there. I wonder if this will help them make IE a real browser?
tech | -moz-

- Thursday, April 08, 2004

More Peeps

Slate has a neat article on Peeps' relationship to Easter. Here's a quote:
This Easter Americans will consume an estimated 700 million Marshmallow Peeps. Some will also be consumed by them—fanatics maintain Web sites featuring everything from Peep erotica, dubbed "Peep Smut," to an inventive online movie called "Lord of the Peeps," and each year at least a few newspapers print odes to the candy. But for all the fascination with Peeps, it's never been clear why the sugary treats are associated with Easter. The marshmallow rabbits represent the Easter Bunny, but what do marshmallow chicks have to do with the resurrection of Christ?
KS

Brains 4 Zombies

Davey sent me this bizzarro Amazon-esque site. Apparently it has brains for zombies. It's quite elaborate, even though it doesn't have a gold box.
KS

Using Javascript in your bookmarks (aka Bookmarklets)

It seems like I've been using this more and more. I forget what first inspired me to try pasting a url with 'javascript:' in it into a bookmark, but the first collection of Bookmarklets I found was this one. An easy bookmarklet for a beginner is a google search. The first step is to just bookmark the site. Then edit the bookmark and paste in a little bit of Javascript to make it more interactive:
javascript:document.location='http://www.google.com/search?q='+prompt('Google search for...');
(please forgive the 1 letter variables, and lack of proper spacing. it has to fit into a 1 line text input so there isn't really a lot of room)
I thought that was the coolest thing after I realized it worked. Then I thought it would be nice if it could read the existing search value from the querystring (in case i misspelled something, or wanted to change the search slightly). So I threw in some code to grab querystring variables:
javascript: s=location.search.substring(1,location.search.length).split('&');for (i=0;i<s.length;i++){t = s[i].split('='); if (t[0] == 'q'){ v=unescape(t[1]).split('+').join(' ');i=s.length++;} else v='';} q=prompt('Google search for...',v); if (q != null) {window.location='http://google.com/search?q=' + q;} else {void(null);}
What's nice about google, is that they use the same querystring variable across their sites. So the following bookmarklets would all work with each other:
javascript: s=location.search.substring(1,location.search.length).split('&');for (i=0;i<s.length;i++){t = s[i].split('='); if (t[0] == 'q'){ v=unescape(t[1]).split('+').join(' ');i=s.length++;} else v='';} q=prompt('Google News search for...',v); if (q != null) {window.location='http://news.google.com/news?num=100&sa=G&scoring=d&q=' + q;} else {void(null);}
javascript: s=location.search.substring(1,location.search.length).split('&');for (i=0;i<s.length;i++){t = s[i].split('='); if (t[0] == 'q'){ v=unescape(t[1]).split('+').join(' ');i=s.length++;} else v='';} q=prompt('Froogle search for...',v); if (q != null) {window.location='http://froogle.google.com/froogle?btnG=Froogle+Search&q=' + q;} else {void(null);}
To see what I'm talking about, perform a search on the different bookmarklets and you'll see how your search phrase gets passed into each one automatically, even though you are searching on different sites. What's even cooler is when other sites happen to use 'q' as their search variable:
javascript: s=location.search.substring(1,location.search.length).split('&');for (i=0;i<s.length;i++){t = s[i].split('='); if (t[0] == 'q'){ v=unescape(t[1]).split('+').join(' ');i=s.length++;} else v='';} q=prompt('BizRate search for...',v); if (q != null) {window.location='http://www.bizrate.com/marketplace/search/search.xpml?de_id=200&search_box=1&cat_id=1&SEARCH_GO.x=14&SEARCH_GO.y=3&SEARCH_GO=Submit&keyword=' + q + '&q=' + q;} else {void(null);}
javascript: s=location.search.substring(1,location.search.length).split('&');for (i=0;i<s.length;i++){t = s[i].split('='); if (t[0] == 'q'){ v=unescape(t[1]).split('+').join(' ');i=s.length++;} else v='';} q=prompt('Dictionary search for...',v); if (q != null) {window.location='http://dictionary.reference.com/search?q=' + q;} else {void(null);}
Where I've found this most useful lately is searching for houses. It's a real time saver when you have to deal with poorly designed forms. This example searches Nothnagle's site for a particular zip code (the price is hard-coded to 65000-95000 since Nothnagle doesn't offer those prices in their form, and I have other criteria thrown in there as well):
javascript:s=location.search.substring(1,location.search.length).split('&');for (i=0;i<s.length;i++){t = s[i].split('='); if (t[0] == 'PRM_ZipCode'){ v=unescape(t[1]).split('+').join(' ');i=s.length++;} else v='';} q=prompt('Zip',v); if (q != null) {window.location='http://www.nothnagle.com/property/proplist.asp?VAR_SearchType=listmailer&VAR_AllowSaveSearch=0&PRM_ZipCode='+q+'&PRM_Maximum_Price=95000&PRM_Minimum_Baths=1&PRM_Minimum_Beds=3&PRM_Minimum_Price=65000&VAR_PropertyCity=&VAR_PageSize=50';} else {void(null);}
After getting frustrated with the limited information for particular houses on Nothnagle's site, I made one to pass the MLS number (MLS is the unique identifier given to houses that are put up for sale) over to Realtor.com's site:
javascript:s=location.search.substring(1,location.search.length).split('&');for(i=0;i<s.length;i++){t=s[i].split('=');if(t[0]=='PRM_MLSNumber'){ v=unescape(t[1]).split('+').join(' ');i=s.length++;}else v='';}q=prompt('MLS',v);if(q!=null){window.location='http://www.realtor.com/FindHome/Transition.asp?st=&mnprice=0&mxprice=99999999&mnbed=0&mnbath=0&mnsqft=0&exft=0&exft=0&exft=0&exft=0&frm=bymlsid&pgnum=1&mls=xmls&lnksrc=&js=off&fid=so&vtsort=&ss_aywr=&optInCheckbox=&poe=realtor&ct=&zp=&typ=1&typ=3&typ=7&typ=2&typ=6&typ=4&typ=5&lid='+q;}else{void(null);}
This has been a great timesaver for me. The basic format I use is this:
javascript: s=location.search.substring(1,location.search.length).split('&');for (i=0;i<s.length;i++){t = s[i].split('='); if (t[0] == 'q [this is the querystring parameter to look for] '){ v=unescape(t[1]).split('+').join(' ');i=s.length++;} else v='';} q=prompt('Google search for... [this is the question in the prompt] ',v); if (q != null) {window.location='http://google.com/search?q= [this is the first half of the URL, it MUST end in the querystring variable followed immediately by '='] ' + q + '& [any other url stuff goes here, it should be preceded by '&'] ';} else {void(null);}
It's pretty easy once you get the hang of it. If you want to use it on a form that POSTs (instead of GETs) you can try using the Web Developer toolbar in your real browser. It has a nice feature that converts POST to GET. Then you can bookmark the resulting URL. If that doesn't work you could try dynamically writing out a form with all the necessary variables/inputs and a POST action then submitting it all with javascript. I've never tried it, but it could work.

If you don't use a real browser and you need a javascript debugger, you can try the following bookmarklet I made:
javascript:document.writeln('<html><body><form><textarea style="width:100%;height:400px;">// javascript goes here</textarea><input type="button" value="eval" onclick="javascript:eval(this.form.elements[0].value);" /></form></body></html>');
I started working on a vbscript one, but it isn't as easy since vbscript uses CRLF as a statement terminator. I really haven't had the need for it so I just gave up.
(I used this JavaScript code highlighter for this post, anyone know of a better one?)
tech | -moz-

- Wednesday, April 07, 2004

S M R T

Think you're dumb? You'll feel even dumber if you read this Wired article on NASA testing the fabric of space and time. It's "technical".

I have laid a claim for TraviBlog

Listed on BlogShares
I don't really know what it means, but I figure I should probably claim it.