Added a close button, dug some drains

Closed
Due to overwhelming demand, I did a quick update to PeteSearch on Thursday night and added a button at the top of the split-screen preview to close it. I’ve got plans to offer a slightly more sophisticated toolbar at the top of the preview, but it seemed like a big usability problem so I wanted to get a fix in as soon as I could, and I’ll add the bells and whistles when I have a chance.

I’ve just had a great another great day out on the local trails, doing some work with the Santa Monica Mountains Trails Council. Check out this snake I met whilst leading a crew last weekend!
Pix_boney_trail_20070505_03_califor

Luckily he (or she, not sure how to tell with snakes!) was unscathed by our tools, and slithered off into the bushes once we got him or her out of our way.

Today we worked on Zuma Canyon, in the middle of Malibu. I’d never been there before, we usually go to the closer, west end of the mountains, but it was really beautiful. I managed to put my pick to good use, building a few drains where the water was eroding the trail, and came home filthy but happy.

Public PeteSearch Launch

TreeOn Tuesday night, I found a way to work around the Firefox crash that was holding me back from doing a proper launch of PeteSearch (by switching to getElementByName() rather than getElementById() for the technically minded).

I started off by posting to the outer-court.com forum, once I heard back from the guys there that it all seemed to be working for them, I contacted John Battelle and Gary Price. They’ve both been very generous with their time, in Gary’s case despite just having just got married on Sunday, and being about to head on his honeymoon! Congratulations Gary!

That lead to a lot of traffic, and some more blog mentions, notably from Pete Prestino, and a couple of French sites, Brainsfeed and NetWizz

It was really nice to see other people as excited about the idea behind PeteSearch as I am. I’m convinced there’s a lot of ways to improve search interfaces, it’s good to see people are looking for something better than the current passive page full of links.

What was really helpful were all the ideas for improving PeteSearch. Gary mentioned that the split-screen view was too hard to close, which I  plan on fixing with a button on a small bar at the top. I might add some other options there too, I’m reluctant to have a typical always-on toolbar since I don’t want to suck up users valuable screen real-estate, but a transient bar there seems a lot less annoying.

All-new PeteSearch

EyeI’ve just put up a new version of the PeteSearch Firefox plugin. Highlights include Technorati support, a better summary popup, control+equals will open all the results in new tabs, and the preview is now shown in a split-screen view rather than a popup window.

These improvements were inspired by some great feedback, including Ionut from Google Operating System and Phillipp from Google Blogoscoped, thanks for all your help!  One question that I’m planning to answer with a short video demo is why it second-guesses Google and checks all the pages in the results itself, but here’s a summary:

I’m a graphics researcher, so I have to do a lot of exotic queries. I got very frustrated one day after clicking on a bunch of results, and on each one waiting for it to load, only to discover that it didn’t have the term I was looking for, or the page didn’t exist at all. Computers are meant to speed up repetitive, time-consuming work like that, so I decided to write a tool to automate the process I was going through.

Here’s an example of a query that has a lot of bad results:
http://www.google.com/search?q=nsIWebBrowserFind+regexp

And here’s the top ten results I get:

customizing mozilla
regexp term missing

Mozilla Firefox 1.5 files and source code
Exists, and has all the terms

Search
Gives a 404 error when clicked on

mozilla-devel-1.6-12.5.100mdk.ia64 RPM
Gives a 404 error when clicked on

seamonkey-debug-1.1.1-2mdv2007.1.i586 RPM
Gives a 404 error when clicked on

r976 – in changes/jat/mozilla1.7.13/tools/sdk/mozilla-1.7.13 …
Exists, and has all the terms

Ž­è @ d – ¨ I \ ( ] Œ ^ ß BD < , Y Ä ,$ , : G > d ã † Ž ˜ y Ô Ó h …
All terms found –

/usr/share/comps/sparc/.discinfo /usr/share/comps/sparc/comps.xml …
Exists, but doesn’t contain either of the terms

libPropList-devel-0.10.1-371.i586.rpm …
Exists, and has both terms

bin/cat utils/coreutils bin/chgrp utils/coreutils bin/chmod utils …
Exists, and has both terms

So four out of the top ten results are bad, and without PeteSearch I’d have to waste time clicking on them, waiting for them to load or fail, and then search through for the terms I wanted. With my extension, I can focus on the good results.

If you are doing a lot of complex or obscure searches, you should try PeteSearch, it’s designed to save you time.

Firefox Search Addon

Iconbig_2I’ve finally been able to spend some more time on my quest to speed up searching. I came to the painful conclusion that the cross-platform, cross-browser, no-installation advantages of using a Java applet were outweighed by the long startup times and scary security messages.

Instead, I’ve written a Firefox extension that does everything SearchMash did, and more. PeteSearch is now live at http://petesearch.com/

It’s a low-key release at the moment, because I ran into a Firefox bug that caused getElementById to crash the browser occasionally. It turned out that this was one of the top reported crashers in Firefox 2, but nobody had a good repro case or fix.

I rolled up my sleeves, checked out the Firefox source, and after some logging, debugging and head-scratching, figured out what was going wrong. Jonas Sicking was able to give me some pointers on how to fix it, and I’ve got a patch he’s reviewing at the moment.

Since it’s a high-priority bug, I believe my fix will be in the next point release of Firefox, 2.0.4, which I hope will be out in a few weeks. So I’m going to wait for that fix before I really push it.

There’s some big improvements from SearchMash:

  • Hot-keys – You can use control+left/right arrow keys to move through the results, and up and down to move through the pages of results
  • Text preview – You can get a plain-text summary of each result, with every occurrence of a search term shown in context. It’s like the summary below the link in Google, but for every time the term occurs.
  • Internationalization – 55 national google sites are supported
  • Ask.com and Microsoft Live are supported as well as Google

Still hibernating…

Iconbig
I’m still very busy with my day job, but I did have a chance to put together a Firefox extension over the weekend. It looks through your history, and puts your top ten visited sites as shortcuts in a toolbar. This is something I wanted for my own browsing, since I have a lot of sites I visit often, but I find bookmark management tedious.

You can give it a whirl at http://petehistory.com

I know I’m not alone in finding bookmarks a pain (eg http://wiki.mozilla.org/Places quotes figures that only 1-3% of page navigations use bookmarks or the history), so I believe other people will find it handy too.

Hibernating

Sleepycat
As sometimes happens, my job has been in crunch mode for the last couple of months, and will be for a while yet. I’ll be updating the blog and site sporadically, but it’ll be pretty quiet until I have some free time again. You can still contact me on email during my hibernation.

Slow Java Startup

Snail

I knew I was taking a gamble using a Java applet for SearchMash, since Sun seems to have abandoned it as a client-side technology. Mostly it’s paid off, I’ve been able to develop a pretty rich web app that runs entirely on the client, and with no install step. There’s a big problem with using a Java applet though, it takes forever to load, often adding 30 seconds to the load time of the page.

This is a well documented problem, but it seems like a tough one to solve. On OS X with Safari it’s not as bad, since it seems like the Java environment is pre-loaded, but it still takes 10 seconds or so the first time you visit the page. On OS X Firefox it’s a bit worse, and on Windows both Firefox and IE can take a very long time.

My only ideas on tackling this are to do something interesting during the loading process (a game of pong anyone?), or switch to a different technology entirely.

I’ve been considering two different approaches, either using a Firefox extension, or writing a standalone app. The Firefox extension would require an install step, something I’ve tried to avoid, but would be an integrated part of browsing after that. A standalone app would be more work to write, require installation, and have the barrier of not being part of the browser, but it would allow me to do a lot of the more advanced things I’ve wanted, like animated thumbnail browsing of pages.

Firefox Javascript Debugging

Bug

I’ve got the week off for Thanksgiving, so I had a chance to get back to coding searchmash. I was planning on tackling the back button support, but ended up spending the day on a perplexing Firefox issue.

One great thing about debugging Safari is being able to output text to the console using “window.console.log()”. It’s not as good as MS’s free script debugger, but it’s a lot better than using alert()’s.

I eventually found a way, but it was not well documented, so here’s a quick walk-through:

  • Type about:config in Firefox’s address bar.
  • You should now see a list of names and values in the main window.
  • Right-click anywhere in the window, and chose New->Boolean from the menu.
  • In the box that comes up, put in browser.dom.window.dump.enabled
  • In the next box, chose true

You can now call window.dump(), and the string you pass in will appear in the system console. On the Mac, this is visible in the /Applications/Utilities/Console.app program.

A wrench in the works!

Tirewrench

As I was driving to the monthly Trails Council board meeting on Thursday, I suddenly heard a massive racket coming from the back of my car. I pulled over to the side, and discovered that a wrench had somehow impaled itself on my rear passenger tire!

I have no idea how that happened, I was going around 40 mph on a busy road, so my only theory is that it was bouncing around on the road and somehow it flipped up just when I hit it.

Luckily I didn’t lose control, and just had to get a new tire. The folks at Discount Tire Centers were highly amused by the sight, and lived up to their name with a good price and friendly service.

Crossloop review

Crossloop_1

I’ve been using Crossloop for the last week, and I give it two thumbs up! As I mentioned in my original post, it’s a remote desktop app for the rest of us. Its strength is its simplicity, the team have obviously spent a lot of time figuring out how to remove the usual clutter of network configuration and the setup dance you normally have to go through to make a remote desktop connection.

This is especially important in the situation I most often want to do remote desktop access, where I’m trying to sort out a computer problem for a less experienced friend or relative. Since my relatives are all 6000 miles away, I can’t be there in person as much as I’d like, so I have to talk them through the problem on the phone. I’d love to be able to see what’s on their screen, but never considered asking them to install a remote desktop application since they’re expensive, tricky to set up, and time-consuming to use. I’d imagine that most computer support lines are also in the same position, they’d love to see what their customers are seeing, but it’s just too difficult to set up.

The first great thing about Crossloop is that it’s free! It’s not only the financial cost that this saves, it also removes any messing around with payment systems or serial numbers, making the download and install process very fast.

To start using Crossloop, you download the application, and run the installer. There’s no options in the install process, which keeps things nice and simple. The only downside is that the app is PC only, hopefully the team will produce a Mac version in the future.

Once it’s downloaded, you launch the app and it shows you a single window with two tabs, one for looking at someone else’s screen, and the other for making your screen viewable by other people. The windows both use large fonts and a minimal layout of buttons and text boxes to make it easy for any level of user to work with.

One key innovation is the use of an ‘access code’ for controlling remote sessions. This is an auto-generated number that you see when you start trying to show other people your screen. The beauty of it is, all the other person needs to do is type that same number into their ‘join session’ window, and Crossloop will locate and connect you to that session. This is a brilliant approach, since it removes the usual hunting around for IP numbers or network locations that other applications require, which is a big hurdle for most users. The metaphor is very much like a phone number, and since it’s long and auto-generated for each session, it’s unlikely that someone malicious can gain access to your screen through it.

When someone joins a session you create, you get asked if you want to allow them, with a simple dialog showing their Windows user and computer names, which gives you another level of security.

I found using Crossloop in general to be head and shoulders above the alternatives for ease of use and speed. There were a few minor things I’d like to see improved though.

One slight down-side is that the Windows firewall sometimes warns about the network communication being done by Crossloop, asking it it should be blocked or allowed. This wasn’t a big problem, but did add an extra step to talking someone through using it.

Going into fullscreen mode, for example with a game, ended the session, which was understandable (capturing DirectX fullscreen mode is difficult), and the session was automatically ended pretty gracefully.

The image compression seemed to produce JPEG artifacts around text. It was still very readable, but it would be nice if there were some way of progressively improving the quality for unchanging pieces of text, as it makes reading text tougher, and got more noticeable in longer sessions.

One clever touch was the addition of a feedback dialog asking you to rate the session after it ended, and offering you the chance to share Crossloop with your friends. Hopefully this will give them some good data to keep improving the product, and spread the word about this great way of working remotely.

Overall, this is a great product that I’ll be using for all my remote trouble-shooting, and I highly recommend it.