From: John-Paul Stewart on
blmblm(a)myrealbox.com wrote:
>
> That's what I generally assume too, but I vaguely remember hearing
> about a study Apple conducted many years ago that demonstrated that
> people *think* a CLI is faster, but if you do actual measurements of
> how long tasks take, it turns out the point and click is as fast or
> faster. No, I don't (want to) believe it, but it could be true??

How complex were the commands being entered? Were the CLI users
proficient typists? I can certainly understand how a point-and-click
GUI is faster than hunt-and-peck typing on the CLI. But if you can type
quickly (using proper technique or otherwise...as long as its fast), I
would expect typing in a command to be a lot faster (especially since
your hands don't have to leave the keyboard).
From: Tobias Brox on
[Lee Sau Dan]
> Show me your design, then. I don't require you to implement it. Just
> show me the design, instead of claim that "there exists such a
> design".

That's what I get for involving myself in stupid discussions :-)

Some disclaimers first:

- I'm not a designer, and I have very poor skills in both design and
human interfaces. I have implemented several systems allowing
users to query databases through web interfaces, though those user
interfaces have been ment only for internal use for employees and
not something to be shown to external users.

- When it comes to the implementation, the design below can as well
be implemented in a curses application, a "TUI" - text user
interface.

- While I in general agree with Breuer that it should be possible to
make a GUI, I'm not claiming that it will be easy to use in all
possible cases. It is beeing said that an image can express
thousands of words - but it is also true that sometimes some few
words can express more than a thousand pictures. There will always
be special cases where a short command will require lots of tedious
work to enter into the GUI part.

- While Breuer is correct that any boolean expression can be
normalized, I think he is overlooking that it's actually possible
to mix _actions_ into the boolean expressions given to find - and
honestly, I also overlooked that. I think a boolean expression
with side effects cannot be normalized. Particularly the "prune"
action is not catered for in the interface below.

- I must admit that I haven't spent much time thinking about the
stuff below, there are probably things I have overlooked or
problems I haven't foreseen.

- My claim is only that, for somebody not using 'find' often, the
user interface below in the very most cases will be easier to use
than the manuals.

Ok, load up a monospacefont if you don't already have one, and here we
go:

-----------------------------------------------------------------------------
| Base dir: ____ <browse> <add> | [actual command] |
|---------------------------------------| find . -type f -size +60k ... |
| [Global options] | |
| {Follow Symlinks} {daystart} | <clear button> <execute-button>|
| {max|mindepth}: ___ {mount} (...) |-----------------------------------|
|---------------------------------------| [found files list] |
| {tattr} {min|max|btw|eq} ___ {res} | |
| Size: {min|max|btw|eq} ___ {b|k|M|G} | |
| Type: m{type} | |
| {name|path|iname ...}: ____ | |
| (...) | |
| empty: [X] nogroup: [X] | |
| nouser: [X] | |
| (...) | |
| | |
| | |
| | |
| | |
| |-----------------------------------|
| | [Action menu] <save search> |
| | <save list> <execute command> |
| <add restrictions> <clear> <search> | <clear list> <formatting options> |
-----------------------------------------------------------------------------

[] indicates a comment or header, <...> indicates buttons, {...}
indicates a select box / pulldown, m{...} indicates multiple-selection
select boxes, [X] indicates a checkbox and ___ indicates a textbox.

To use "and" above, one can either fill in several boxes, or use the
'add restrictions'-button. For some few attributes, it's possible to
do "OR" by multiple selection boxes. Except for that, one can simply
press the "search"-button several times to add the results from
several queries.

There should be negation checkboxes above, they are skipped for space
reasons.

I'll start from the top left:

* Possibility to enter base dir. Defaults to '.' Possibility to add
more base dirs by pressing "add dir". Possibility to browse for dir.
Possibility to enter directories with wildcards.

* Global options - section with the different options for symlinks
(follow, never follow, follow those on command line, etc),
maxdepth, mindepth, etc (most of those options can be used in a
local scope when using command line, so here we clearly miss out
something compared to the CLI)

* Next, section of restrictions. First there are time restrictions,
a select-box - {tattr} above - on which time we want to restrict on
(access, status change, modified, etc), then a select box for
choosing between "min", "max", "equals" and "between" - in the
latter case, two text fields will appear. After the text field is
a resolution selection box, minutes, hours, days, weeks and
monthes.

* Clicking the "add restrictions" will always cause the top right
find command to be extended. Clicking "search" will (if needed)
cause the find command to be extended, and then the command to be
executed.

* At the top right, [actual command], the actual command is displayed
in a text box, and the user is free to edit it and execute it.
Eventually, there has to be an area for displaying errors ...

* Pressing "execute" or "search" would eventually add to the file
list, but the program will be smart enough to keep out duplicates.

* It's possible to manually delete and add items to the list

* At last, there is the action menu - what to do with the list of
files. They can be deleted, the format of the file listing can be
changed, the list can be saved to file, the list can be cleared,
etc. When pressing "save search", a single find expression is
written to disk. I.e. if the user is fist building "find -size
+6M" through the user interface, executes, and then exeuctes "find
-type d", then the query "find -size +6M -o -type d" is saved to
the file.

--
This signature has been virus scanned, and is probably safe to read
Tobias Brox, 69?42'N, 18?57'E
From: Tobias Brox on
[Lee Sau Dan]
> Peter> Chose A, C checkboxes. Click "again". Chose B, C
> Peter> checkboxes. Click "finish" ("search", whatever).

> So, you've done the conversion to CNF in your brain, haven't you?

A user accustomized to such a tool will think in CNF, no conversion
needed.

--
This signature has been virus scanned, and is probably safe to read
Tobias Brox, 69?42'N, 18?57'E
From: Peter T. Breuer on
In comp.os.linux.misc Tobias Brox <tobias(a)stud.cs.uit.no> wrote:
> - While Breuer is correct that any boolean expression can be
> normalized, I think he is overlooking that it's actually possible
> to mix _actions_ into the boolean expressions given to find - and
> honestly, I also overlooked that. I think a boolean expression
> with side effects cannot be normalized. Particularly the "prune"
> action is not catered for in the interface below.

That's true - but then it's an ill-thought out feature of find in the
sense that the extra complexity allowed by embedding various execs at
once in a search expression is not wanted. What they MEANT to do was
apply an action at each of the selected subset of nodes and leaves in
the file hierarchy.

That's simply a final coup-de-grace on the end of the filter chain.

> Ok, load up a monospacefont if you don't already have one, and here we
> go:

[loadsa work snipped! Wow!]

Peter
From: blmblm on
In article <87wtifv7l6.fsf(a)informatik.uni-freiburg.de>,
Lee Sau Dan <danlee(a)informatik.uni-freiburg.de> wrote:
>>>>>> "blmblm" == blmblm <blmblm(a)myrealbox.com> writes:
>
> blmblm> I claim that this is not as good an analogy as you think,
> blmblm> especially for buying products for which no prescription
> blmblm> is required: Some people do indeed remember the name of
> blmblm> the drug, but others may remember "oh, it's that stuff I
> blmblm> bought last time that worked so well, can't remember the
> blmblm> name, but the box is pink with green letters .... "
>
>At least, you describe it, and then the shopkeeper follows your
>(vague) instruction to fetch the drug for you, right? Isn't that CLI?
>You may need a few iterations of trial-and-error or a selection from a
>list of candidates before getting the drug you want, but so does the
>interactive completion feature of bash (GNU readline).

Well, that's if you ask the shopkeeper. I had in mind a scenario in
which you're just browsing the shelves yourself (that's why I said
"no prescription required" -- so you wouldn't need the help of a
pharmacist or such). Not the best analogy overall, now that I think
about it.

> blmblm> Something similar applies to CLI/GUI. If you remember the
> blmblm> command and the options, a CLI is often more efficient,
> blmblm> but if you don't ....
>
>Still the CLI is faster. Type "less a*.txt<TAB>" in /bin/bash and the
>completion would look for a filename that begins with "a" and ends
>with ".txt" for you. You don't need to go through the other 100 files
>that don't begin with a or don't end with ".txt". If there is only 1
>match, bash will type that filename for you -- however length it is,
>and quote all the special characters (space, *, etc.) in the filename
>for you.

Ah yes, but this doesn't really help you find *commands*, does it?
well, yes, if you remember the first few letters of the command, you
can use command-name completion, but if you don't remember the first
few letters? And as for options .... No, I think you have to read
the man/info pages, or try running the command with "-h" or "--help"
and hope it will tell you ....

Sure, I know how to do a lot of this stuff, and I'd probably rather
use "man" to track down the right CLI command than mess with a GUI,
but I don't think it's actually more efficient, just a matter of
preference.

--
| B. L. Massingill
| ObDisclaimer: I don't speak for my employers; they return the favor.