Hello Skip;
The things that come to mind as sources of our own solutions are:
. krugle.com, which seemed to be the latest thing a year or so ago;
. CPAN, which is the ultimate solution for reusing community code, if it
wasn't for Perl users ;-)
. Google Code , or something like that.
I'm wondering if and how these things could be adapted for J solutions.
Skip Cave wrote:
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
--
------------------------------------------------------------------------
|\/| Randy A MacDonald | APL: If you can say it, it's done.. (ram)
|/\| ramacd <at> nbnet.nb.ca |
|\ | | The only real problem with APL is that
BSc(Math) UNBF'83 | it is "still ahead of its time."
Sapere Aude | - Morten Kromberg
Natural Born APL'er |
-----------------------------------------------------(INTP)----{ gnat }-
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm