I have a problem all the time with the J docs trying to find solutions
to problems that I know have been solved before, somewhere. The basic
issue is that J users don't necessarily use the same names for things
that the wider programming or general audience uses. Even regular J
users don't always find that long-lost post that had the elegant
solution to their current problem, which they vaguely remember from a
couple of years back. For that matter, J users may not describe their
solution in a way that can be recognized by others as a solution at all,
for a specific type of problem. This problem is not particularly unique
to J, as every group tends to invent some of its own jargon, but the
broad applicability of J to general problems, and the extensive body of
contributions from J users and developers, greatly exacerbates the issue.
Just looking at the forums for example, a majority of the questions
posted on the forum by newbies and casual users have answers posted in
the wiki, in a reference work, or in a post elsewhere in the forum.
Often, there is an extensive wiki article on the subject, or a whole
chapter in the reference book, but the newbie didn't find it. This is
almost always because the terminology in the post or article didn't
contain any of the keywords that the newbie was searching for. Some
newbies are lazy, and ask for a solution without searching first, but
most at least make a try at it, before posting a question.
J users post solutions to a wide range of problems in the forums, Jwiki,
reference books, puzzles, white papers, and many other places.
Unfortunately, keywords or phrases that might help other users find
these solutions, are often not included in the postings, so the elegant
solution is often permanently lost to users who are looking for that
solution. No kind of fancy indexing scheme will find information, when a
poster uses different terminology to describe their posted information,
than the terminology that the searcher uses to try and find it. .
One of my biggest frustrations with J is when I have a problem that I am
trying to solve. I know that I have seen the solution done elegantly
somewhere in the past, but I can't find it. Many times, I never find the
solution, and I end up struggling to re-invent the solution, but my
answer seems never to be as efficient or bug-free as the post I
remember. Sometimes I stumble across the searched-for post, long after I
have cobbled together a solution, and I marvel at how much better the
post was than my solution (and how much time I would have saved if I
could have initially found the post.)
I have thought quite a bit about how one could rectify this situation,
but there aren't any easy answers. There is a basic problem about
describing algorithms, in that people tend to think about an algorithm
in a specific context, and don't necessarily generalize the idea.
Because of this, all of the descriptive wording in the post is focused
around the specific problem, and a general text description of the
algorithm is missing. For that matter, it may just be difficult to
describe the algorithm in any unique way, which makes it hard to find in
searches.
For example, I was looking for an algorithm to sequentially increment
multiple digits, like the electric meter on my house counts up
kilowatts. I couldn't find anything in the index about this. I searched,
increment, electric, digits, and several other terms. No luck. Later I
discovered that this is called an "odometer" function. If I had known
the key word, there would have been no problem. I would have found
Roger's elegant solution immediately (odometer=: #: i.@(*/)). As it
was, I ended up with a kludge that took me a couple of hours to tweak
and get working, which still had a couple of bugs that I had to work around.
There may be a way to at least help with this problem, however. What if
there was a mechanism where users could add keyword tags to any post,
article, forum page, or other document in the J panorama of
information. It would be a a simple process where a user who say, found
Roger's wiki odometer page, could click on a "add keyword" on the page,
and add the keyword "electric meter" and perhaps just "meter" as well as
"increment" to the page. So when a user searched for one of those terms,
they could find Rogers' article immediately. If a user found a specific
page or section in Henry Rich's reference book "J for C Programmers"
that described a particular algorithm, the user could add several
keywords that helped broaden the access to that section, for those that
might use the new keywords for the search.
Anyone should be able to add keywords to the posts, wiki pages, or even
to pages in the various reference books provided. Whenever a
question-asking newbie is pointed to a post, the newbies' unsuccessful
search terms should be obtained, and added to the specific post's
keywords. In this way, the next time a newbie searched for that issue
using that keyword, it would be found. The J community could help this
along by adding their own keywords whenever they ran across a post or
article that was hard for them to find, because of a keyword that they
felt was missing. It wouldn't take long before finding solutions in J
would become much more effective and efficient for everyone.
Today, the range of solutions to problems posted in the various
repositories of J information is amazing. The J wiki is a treasure trove
of information, not only of J solutions, but general knowledge about
algorithms. The largest barrier to the utilization of all fo that useful
information, is simply the difficulty of finding it. I believe that
fixing the discovery problem, and making it easy to use, will do more
for J usage than any other single project that the community could take on.
Skip Cave
<<<>>>
Devon McCormick wrote:
Jack - this is an important and long-standing question. We've kicked this
around at NYCJUG meetings without coming up with a very good answer. The
wiki is increasingly useful - it might be more so if there were a "keywords"
section that listed relevant phrases, such as common synonyms, not found in
the text of the wiki page.
For instance, I was looking for some J code to wrap lines of text beyond a
certain length. I thought I had seen such code but I couldn't find it, so I
ended up writing something quick and dirty. Later, I found an essay by
Roger where he solved this same problem (much more elegantly, of course).
However, I couldn't find this piece by searching on the first several
phrases that came to mind. I need to add a wiki page about this to make it
easier for other people in the future. (See how hard it is for you to find
this page now).
This sort of self-help
is much more labor-intensive than a mechanically-generated index but
may be the best solution over time if we can reach a critical mass of
people updating the Wiki.
On 1/31/08, Jack Andrews <[EMAIL PROTECTED]> wrote:
hi,
is there a plan for tidying up system/extras/help/index?
it seems that there was a good index at one stage.
now, it's hard to know where to go for different topics.
is google desktop the answer? (or grep -r ?)
or a fancy built in help search in the interpreter?
jack
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm