Everybody Loves Regular Expressions!

I’ve had several requests for my “Regular Expressions Quick-Reference/Comparison Chart,” so I’m posting it here. At the moment, it covers the vim-, BRE- (used by ed, sed, and grep), ERE- (used by egrep, and sed -r), and perl- (used by perl (naturally!) and most copies of rename) flavors at the moment. This is still quite a work in progress—I’m considering adding another column (perhaps ruby?), and I’m sure there are at least one or two typos that I’ve let slip through. Please tell me if you find any errors at all, either through comment here or by email.

Regular Expressions Quick-Reference/Comparison Chart (150dpi PNG)
(The requisite preview thumbnail—click to see the 150dpi PNG version.)

After the jump, I’ve attached PDF, postscript, and closely-cropped PNG (150- and 300dpi) versions. I’ve also included my LaTeX source file. Enjoy!

This first release is out of date, last revised on 2008-04-23. See this post for the second version.

Continue reading

Search Done Right—A *Progressive* Progressive Find

Edit: I’ve updated this intro after discovering that I somehow replaced it with some unrevised notes from my initial outline. Oops.

I was reading an argument that progressive find is the best (and only proper) search design, I think in the comments of this article. I got to thinking about what makes progressive, and occasionally modal, search optimal for certain tasks. Each has distinct advantages. Progressive find is rapid, it provides instant indication of most typos, it completes upon minimum unique string, and it can show near matches on failure (specifically, longest common initial sequence).
Modal find, however, is less disorienting, and a failed search doesn’t leave user in at some random location within the document.

I’ve noticed other issues, too. In a misguided attempt to minimize disorienting motion, most software scrolls text only exactly far enough to expose the next match for the search term. This means that except when it is already visible, exactly half the context of the search term–either everything above or everything below—ends up hidden by the edge of the viewport. Additionally, many programs depend on awkward non-central keyboard keys for searching, including the totally arbitrary F3 key. This is a pain for anyone using a laptop with shrunk-and-shifted function keys, a Datahand, or a Happy Hacker (I currently use two of those three).

With all of this in mind, I thought of what sort of search design would marry all the advantages of both designs as well as fixing my big annoyances (half-context results).

Continue reading

The only two interface designs ever conceived:

Let’s see who can guess the two designs I’m referring to. Here’s a hint: they’re more psychological than technical—and if you say anything involving the words “GUI,” “CLI,” “mouse,” or “wizard,” you’re way off track.

The two designs are (drum roll)…

Continue reading

The misused mouse, part 2: A proposal for a nearly mouseless interface.

Since I said the mouse needed to be seriously re-examined as the primary device for interacting with the user-interface (see my previous entry), it’s only fair that I give an example of a better way to do it. In this entry I explore one possible way to minimally change the interface to almost remove the mouse entirely, without increasing the difficulty of learning how to use software.

Continue reading

The misused mouse, part 1: The story of the mouse’s decline

Now, I am by no means hoping to abolish the mouse. Its price to performance ratio is unmatched, and the best alternative pointing device (the tablet) can’t be found for much less than an order of magnitude greater expense: hard to justify for the relatively small performance edge it offers. What I do wish to decry is the enormous reliance on the mouse to cover every possible user interface situation, failing to take advantage of other, better designs. Years of lazy design and low opinions of the user’s desire (even ability) to learn have left us with a constant testing of Fitts’ Law for such trivial tasks as saving, broken paradigms (what about a real-world button relates to replacing an old document irrevocably with the current one?), and a user experience that is more patronizing than productive.

Continue reading

Throw out that mouse—you upgraded to a keyboard!

Celebrating the release of Openbox 3.4, I’ve published my mouseless window management design. Of course, if you use firefox, OO.o, or the like, you’ll have to reach for the rat–that’s not my fault, though. :-D

(For those of you reading backward in time from my more recent entries calling for a more keyboard-centric user-interface, this is only one of numerous possible ways to manage window size/placement without a mouse, and not a particularly good one. It’s just what I’ve been using for a while and have gotten used to. Most problematically, it requires significant training to use.)

Continue reading