There are several InfoWorld.com updates to report today. First, the news gang have started a team blog at http://www.infoworld.com/techwatch/. Excellent!
Second, the site's search engine has switched from Google to Ultraseek. For users of Mozilla Firebird, here are some search plugins you can use to search the whole site, or just this blog:
Mozilla search plugin for InfoWorld: src, img, install to Mozilla
Mozilla search plugin for Jon's Radio: src, img, install to Mozilla
Finally, our survey on programming tools and practices is up at www.infoworld.com/161.
Update: I did a bit more spelunking with Ultraseek's REST interface, ran into a problem, and then solved it. I decided to document the process here because it illustrates why I think REST interfaces should be more carefully specified.
The Firebird plugin, and now also the local blog search in the left navbar, are using Ultraseek's advanced search to match only results with URLs containing weblog.infoworld.com/udell. Here's an example of my first try:
http:\//search.infoworld.com/servlet/query.html?tx0=mycroft &tx1=weblog.infoworld.com%2Fudell&op0=%2B &fl0=&ty0=w&ql=a&op1=%2B&fl1=url%3A
But if you follow that link, you'll see there's a kludge: the skip-to-content link at the top is an awkward way to get past the advanced search instructions. I was able to append #skip to the URL formed by the Mozilla plugin, which sort of worked. A different method would have been required to append #skip to the URL created by the search form on this page -- probably a JavaScript hack. Really, though, I'd rather have just used the simple search page, invoking the URL restriction like so:
http:\//search.infoworld.com/servlet/query.html? qt=%2Bmycroft+%2Burl%3Aweblog.infoworld.com/udell
Much simpler, easier, cleaner. The problem was that interpolating a variable search term (e.g., 'mycroft') into a string template that includes 'url:weblog.infoworld.com/udell' would have required a different JavaScript hack for the form on this page, and might not even be supportable in the Mozilla plugin.
At this point, I concluded it was an overloading problem. With Ultraseek, as with Google and others, the advanced syntax is available in either the advanced or basic mode. But Ultraseek, unlike Google, overloads "advanced" to mean not only a syntax, but a display format. And there's no way (I thought) to use the advanced flavor of the syntax, which enables the term and the URL restriction to be decoupled as separate variables, while preserving the simple flavor of display.
As I wrote the first version of that previous paragraph, though, the solution occurred to me. The advanced syntax used the variable/value pair "ql=a" which presumably says "query language = advanced." What if I kept the rest of the advanced-style URL, but removed the "ql=a"? Sure enough, that worked. Here's the solution:
http:\//search.infoworld.com/servlet/query.html?tx0=mycroft &tx1=weblog.infoworld.com/udell&op0=%2B&fl0=%20 &ty0=w&op1=%2B&fl1=url%3A&ty1=w
This is all very geeky I know, but I do have a larger point. It took me a lot longer to work this out than it ought to have. REST interfaces, in general, are far more capable than people realize, but the possibilities are usually so poorly documented that you have to be extra-motivated to figure them out. Why don't people who work so hard to provide cool features make it easier for other people to discover and use them?
Former URL: http://weblog.infoworld.com/udell/2003/08/01.html#a762