Wiki/Report of Meeting 2024-02-22
Report of Meeting 2024-02-22
Present: Skip Cave, Ed Gottsman, Raul Miller, and Bob Therriault
Full transcripts of this meeting are now available below on this wiki page.
1) Ed had been working on developing a cosine algorithm that will compare pages in the corpora and show the most related pages to the page that you have currently chosen. It is not yet working at a level that would make it into the next version of the J Viewer. Even so, Ed finds the idea attractive and will continue to pursue this feature. Raul noticed that some of the common words are sequences of numbers and there may be ways to eliminate that sort of input. Ed's algorithm now involves providing the most shared of the rare words contained in the documents. Skip raised the question that J's nomenclature can get in the way that functions are called verbs etc. Bob mentioned the NuVoc Glossary https://code.jsoftware.com/wiki/Vocabulary/Glossary that covered much of that information. Raul felt that the Glossary is probably too much to digest in any one sitting. It may be useful to have key concepts with quick definitions and links that are required to understand a page's concepts. Bob noted that the links to the Glossaries are present in a lot of NuVoc pages https://code.jsoftware.com/wiki/Vocabulary/plus#dyadic. Raul felt that it would be useful to extend this to the Essay pages. Bob didn't use a lot of links to the Glossary when he updated the J Primer to avoid distracting information. Raul did not feel that links are distracting when on a wiki page. Ed showed a wikipedia page that will show a quick look when the user hovers over the link. The extension Raul found was https://www.mediawiki.org/wiki/Extension:Popups Extension:popups. Bob wondered if analyzing the links contained on the page provide a first step to the search. Ed felt this would work in the wiki, but not useful for forum posts. Ed's goal is to infer a category hierarchy automatically. This tool would be a great rabbit hole enabler.
2) Bob showed the template https://code.jsoftware.com/wiki/Template:Historic Raul had produced for wiki pages that have gone out of date. https://code.jsoftware.com/wiki/Guides/Standalone_Applications This template is set up to provide boilerplate verbiage along with a link that supplied by the wiki maintainer. Bob feels that many of the pages that have been categorized as Archives would be candidates for this template. The templates would not interfere with Ed's searches. It also is an explicit message that does not require the user to check on categories if they are visible.
3) Skip asked if there is a way to launch the J Viewer. Ed referred to the shortcut instructions on the J Viewer page. Skip said that he could not find it on the JQt menus. Ed explained that the J Viewer is an add-on and is not built into the JQt interface, although once defined it can be found in the Tools | User Keys menu.
4) Bob mentioned that the J Primer is great resource for taking a newcomer all the way through to developing applications while explaining the language. https://code.jsoftware.com/wiki/Help/Primer/Title Skip felt that the Primer should be more available to newcomers. Ed mentioned that there may be an option to add more support links to the JQt menus in addition to Vocabulary, Foreigns in the Help menu.
5) The rest of the meeting involved discussion around getting the Jig representation of nouns on JHS as a work in progress. Transcript is available below.
For access to previous meeting reports https://code.jsoftware.com/wiki/Wiki_Development If you would like to participate in the development of the J wiki please contact us on the J forum and we will get you an invitation to the next J wiki meeting held on Thursdays at 23:59 (UTC) Next meeting is February 29, 2024.
Transcript
Welcome, everybody. I know, Ed, you've been doing lots of work with your viewer and it's...
Yeah, yeah, but I don't have any kind of a victory to celebrate at this point.
So I can show you what I'd hoped to do. I'll share my screen just for a minute.
It's not worth sharing it for much longer.
So the theory is that there's a new menu up here between the shrink browser button and the expand
browser button. And what this menu will do, if it works, which it doesn't, is whatever the page is
that's currently loaded up in the web view, it will show you a couple of dozen related pages.
And in this case, you're looking at a...
very much a test run. There's the name of the page and then some tokens that were determined to be
common tokens with other pages. I won't vouch for these being accurate. That's another thing
that I've been fighting with is whether I've implemented my algorithm properly.
But the point is you could pick one of these and it would load up
that page and then you get a new set of related pages in the menu. And even though it doesn't work,
it's kind of attractive to me to be able to navigate this way. If it worked in the sense
that there were similar pages to be found and I could find them, I think this might be a really
nifty way of navigating Corpus. And right now it's set up so that all the documents it finds
are just in the wiki, but if your algorithm were good enough, you could also have Rosetta code
solutions and the forum and so on participating in the similarity measure.
But the problem is there's no good definition of similar and similar may in fact be the wrong way
to look at it. What I really want is related in some sense, which is even vaguer than similar.
So this whole idea may just not be such a hot idea. I have looked into algorithms for doing
similarity measures. They're out there, but I'm no longer persuaded that that's really what I need.
So I'm at something of a stopping point now. I'm sort of waiting for inspiration.
I can see a couple issues here.
Yeah, only a couple.
Only a couple. Well, I mean, I'm kind of foggy in my vision.
The thing I'm seeing is that a lot of those words aren't really words.
Yeah, that's a problem.
Very caring meaning. And I'm wondering about heuristics that might be used to
correct for that. Like, for example, in J a sequence of numbers is a vector rather than
it's one word. And so there's different ways you might be able to approach this to
de-emphasize non-word. If it's a number discarded entirely in this, it's
one of the few constants that are significant. And there you might work with approximations,
also set up equivalencies.
Just for example, look at the words that came out for LePak or however you pronounce that.
Recommended, explore, expand, consists, remember, begin, meeting, leading, algebra. Now,
I won't vouch for those words. They may not be right, but they're plausible. You could imagine
them being extracted from a document. And suppose you found another document that had those words in
it too. Would you really call it related in any strong sense? I don't think I would.
And this is based off of the idea of just using a few rare words, right? That's what this is.
Yeah, it's the most rare words that are shared between two documents.
Have you tried doing the cosine, using the cosine
similarity algorithm to see what it comes up with?
You know, I did. I was being a little misguided early on. I was trying to go against all the
corpora. That's like 130,000 documents. I should go back and do the cosine approach
just against the wiki, which is only about 3,000 documents. And that might be,
that might give me some kind of insight. So yeah, that's a legitimate point. I should do that.
It's also different other kinds of similarity, you know, besides cosine. I don't know
how relevant any of that's going to be, but I don't know what I'm talking about either.
So, yeah.
Yeah. So, yeah, I, one of the problems I have when I first got into Jay,
was I'm looking for routines or programs and it was verbs. Oh, verbs. Okay. So that's a whole
different, you know, but the nomenclature that Jay's uses for a new user is, you know,
you have to translate that somehow. I don't know, you know, but you need a thesaurus kind of thing.
Well, you need to learn it. Right. But you know, that the purpose of this plan is to help you learn
Jay. Right. So if you say, well, I want to know what routines do X. Oh, well, that's these three
verbs. Oh, verbs. Okay. No, but if you don't, if you don't take that jump to when he asked for a
particular, you know, a program or a routine or some code that does this and you, and, and the
actual answers are in verbs, you know, or we're talking about verbs. So you, you know, that, that
I found I missed a lot of stuff until I realized that. Yeah. I think it's maybe a little giving
me a little too much credit to say, I'm hoping to teach you Jay with this mechanism. Okay. I,
I think that's, that's a worthy goal and there are a variety of ways one could do that.
I'm thinking for this more of something of an expert actually, who's just looking for inspiration.
So he's reading a paper about, I don't know, the Goldbach conjecture. And I wonder what else there
is on the Goldbach conjecture. And the obvious way to do it is to just go searching for Goldbach,
which should work. Yeah, it works. There's even a YouTube video on it. But you know, maybe there's
Sorry. When there's a common name, for example, I want to know how to sort these numbers, right? Oh,
okay. That's a common name. So you can go off. Now there's all you can give them the whole,
you know, Jay, you know, Griff, for sorting, you know, and the whole thing. So as long as they're
using common language, you know, that Jay uses, but Jay calls the sort something else.
So unless you use sort in the, in the description, then people are not going to get there. I guess.
Right. I guess.
Have you looked at new box glossary? Skip?
No, I have not. I admit I have been lax on on getting up. I got it all loaded on
my computer. But but the glossary I haven't I haven't really
got into the glossary. I guess I need to check that out.
So I'd say if you're looking for terminology, the glossary is the place to go.
Okay, all right. I'll do that.
It's got everything sort of laid out there for you. And now there may be more,
but it's got links, you know? Yeah,
yeah, I think what Skip may be getting at, and he's right is, wow, there is some
equivalence between some Jay terms and some more conventional terms for the same concepts.
But, you know, not for others. So verb function. Yeah, that probably works pretty well. Adverb.
Don't know. Don't know what the equivalent is in the conventional programming world for the
term adverb. And that's what I meant when I said that you just have to learn it.
There's only so much handholding we can do, because Jay is really different.
The thing I was thinking was, you know, you have the glossary here, but the glossary is not just
a handful of things. The glossary is too much to digest in any one sitting.
Yeah.
So what I was thinking is an approach parallel to the glossary, you know, kind of
this kind of encapsulated, concise stuff. But instead of as a standalone thing,
like the five key concepts for this page, kind of like prerequisites in a college course.
These are the things to understand. You're going to have an easier time reading this thing. And
if that sort of stuff was sprinkled throughout the wiki, it would be a general, you know,
no matter where you landed, you'd be getting a general introduction of, you know, if you're
having difficulty here, here's where you might go. You know, of course, that can be rabbit
holing if you go too far off. So you have judgment calls there. But it seems like, you know, we can
do, this wouldn't be a tool here, it wouldn't be this tool for you specifically, but it would be
something we could do in the wiki to make it more approachable for the intermediate types that
are maybe getting in over their head, but kind of want to be in over their head.
So, okay. So explicitly stating prerequisites that are linked,
yeah, key concepts, maybe it's terminology with a definition and a link in the definition. That's
what I was thinking. But there might be other ways of doing key concepts or prerequisites besides
that approach. The approach I was thinking was something very similar to
these glossary entries, but on the pages where they'd be most useful.
Right. Well, in a lot of the NUVOC pages, there are links that take you right back to
the glossary definitions. That's very common. This would be, I was thinking more like in the
essays or that sort of thing. Yeah. You could put more links into the essays for sure. Yeah.
And if we have our introductory material, you know, if the array link thing might be good in a
number of introductory pages, the adverb link might be good in some of the introductory pages,
that kind of thing. Yeah. I don't, when I did the primer, I don't think I put too many links back to
the glossary, but I think part of that, when I was thinking about it, I didn't want people getting too
distracted to get drawn off what was being covered in the primer page. Yeah. But I don't think you
can protect people that much. Not in a wiki. You know, if you have a book form or a classroom
format, I can see it. But if you're in a wiki where you don't know the background and intention
of the person who's reading the page, you have to give a certain amount of latitude to the person to
know when it's right to go elsewhere for more depth and when your capital summary right here
is enough. Yeah. And, and I mean, usually what happens is a person will see links and they'll
skip over it unless they're really, really interested. That's just the way of things on
the web. Yeah. I guess I was, I was thinking of areas where in the primer Eric would have
described an adverb, and I could put a link on the word adverb that would take you back to the,
uh, to the glossary, but I, he's already describing the adverb. Right. You know,
that's, he's basically defining it there. I guess, well, one thing it would be, it'd be
awareness of the glossary. If you hit other terms, you didn't know, you don't be able to go there.
That would be, I guess I'm kind of thinking of how I try to structure code comments is, you know,
there's a few, if I'm writing a page, you know, a screen or two of code, and there's a few concepts
elsewhere, I try and leave a comment to, to where to go to, to read up on those concepts. And I
guess I was thinking of applying it to the wiki in general as, as a possible approach.
You know, here's something that Wikipedia has started doing, um, to your point, Ro, about,
you really have to want to, before you follow a link. Um, here, a lot of the links are hovered.
Uh, and when you hover, you get a pop-up, which is just the first few, first couple of sentences,
first 50 words of the target webpage, whatever it is. Okay. That's the medium.
I bet you that's an extension that does it for, I'm betting that that, since that's for internal
links, I bet that that's an extension that we could probably install on the, on the J software
wiki. Yeah. I imagine that you're right. And it's probably, you know, the, the, the issue is not
that the information isn't there. The issue is that it's work to get to it. And if we can cut
down on the work, maybe that's a win. Right. It makes sense.
It would be worth it to find out what extension it is they're using for that hover.
Because I think that, I think Ro's right. Chances are it's, it's probably no different.
The link is probably identical, but the extension is what's providing the pop-up.
Right. I think it's this one.
You put it in the chat.
Zoom chat. That's the wrong zoom window. I'm fine.
Others chat and there's a
extension pop-ups. Who would have thought.
What do you know?
Yeah. Cause that actually would, I mean, you could without having to travel from the page, if it, if it just took you to that section of the page, even just showed you play 50 characters, it would give you a sense of whether you wanted to click off it or not.
So just a thought.
Now, the thing I was thinking about your, your cosine search and those kinds of things.
Yeah.
Yeah.
I mean, I think that's a good point.
I think that's a good point.
I think that's a good point.
I think that's a good point.
I think that's a good point.
I think that's a good point.
- Yeah.
- If you look at those pages,
each of those pages is gonna have a certain number
of links on it.
So if you're on this given page,
there's gonna be a certain number of links.
Are you looking at that off the page?
Are you taking that information off the page?
- No, no, I am not.
- And is that a useful thing to do?
Because even if it was just the first level,
and then you went to your cosine after that,
you're already looking at what that page is linking to.
- Yeah, and that is a pretty good
first order approximation of related pages.
That's an excellent point.
But I mean, you can just click on the links in the page too.
I'm not sure what the benefit of surfacing,
say the first 20 or 30 links from the page
into a menu would be.
- Well, I'm actually not suggesting
that those are the ones that you would have in your menu.
Those are the ones you would start looking at.
Those are already attached to that page.
- Yeah, it's actually perfect.
I mean, I wouldn't imagine that I could do any better
with cosine similarity or any other algorithm
in terms of getting what I want.
I mean, I actually feel a little silly,
but pages that link to that page are...
Although, I mean, if I'm trying to ring forum posts,
which there are a hundred and some thousand
into the game, links don't really help particularly.
If I were just doing the Wiki, that would be one thing,
but I think the Wiki is already pretty good.
The structure around Wiki content is good.
I'm really trying to get to the point.
Sorry, go ahead.
- I've seen redundant pages covering the same topic
that don't link to each other.
Sometimes when I see that, I try and go in and add the links
'cause I think it makes sense,
but sometimes it doesn't even make sense
'cause it's like, this is the J803 version of this page
and this is the J904 version of this page.
- There you go, yeah.
- And it's explicitly labeled as such.
- Well, cosine similarity might be able to find
really egregious cases like that, but to your point,
it's not entirely clear that we should link them
or show them in the same list, or maybe we should.
I don't know.
In any case, sorry, go ahead.
- It's topics.
What you're trying to do here is kind of like categories.
You're trying to bring together various topics
and sometimes that's gonna be more fruitful
than other times.
- I'm trying to infer a category hierarchy, ideally.
That would be a really good thing to be able to do.
And there's a lot of work on that.
But, well, there's some work on that,
but I don't know how applicable it is to this,
these corpora.
In any case, that's where I am.
And I'm gonna keep worrying at it
and see what I can come up with.
But at this point, I don't think it'll be ready in time
for the February J viewer update when it goes out.
- Now, if I was marketing this, I'd love that
because I think you're crafting the ultimate rabbit hole.
- Well, that's the idea is just keep picking
from that menu.
You don't really quite know what you're interested in next,
but bring down that menu and there's stuff that's,
some of it at least will be potentially of interest to you.
And you should be able to keep that up for hours.
And yeah, that's exactly right.
It's a rabbit hole enabler.
That's the whole point.
It's in some sense, it's not the opposite
of what Skip was saying, teaching somebody J,
but it's not what you do if you're trying to learn J.
If you're trying to learn J,
you're not looking for rabbit holes
to disappear down for a few hours.
- Yeah, they're all over the place.
- Well, they are all over the place.
And if we can get the forum posts into it,
that there would really be a lot of rabbit holes
at that point.
- Yeah.
And you're right there.
I mean, some of the GitHub is actually linked
into the Wiki.
- Oh, really?
- Well, because there's links to GitHub,
like in terms of the add-ons and stuff like that.
- Oh, I thought you meant GitHub back to the Wiki.
- No, I don't believe so.
- I wouldn't think so, yeah.
- No, no, this is from the Wiki to the GitHub.
So you do get links back into GitHub that way,
but it's not common.
- Just to simplify my life a little bit,
I was excluding the GitHub documents
and then they consist mostly of code.
There are comments, that's true,
and they're potentially interesting,
but I was trying to simplify my life.
So I took a few thousand GitHub files out.
I don't know, I don't wanna take up any more time with this.
Thank you all for indulging me.
I really appreciate it.
And I'll see if I can come up with anything.
And anybody who has a thought or a question or a comment,
please feel free to write.
And thank you very much.
- Yeah.
- So Bob, you wanted to talk about templates, I think.
- I had mentioned the template that Roland put up.
Let me just take a look and see
if I've got it ready to go here.
Share my screen.
This is very simple, but I think it's excellent.
So this is a standalone application screen
that as you can see, the warning sign at the top
basically states it's historic interest.
And while we hope it's still useful,
may even include deprecator obsolete content.
So basically it's a warning to everybody.
And then underneath is a C system starting J
for hopefully more current coverage of this topic.
So what's really cool about that is that
this is the template.
So all he's created the historic template
and then he's added the link to system starting J.
So all you need to do is put historic
within the double curly braces
along with a link that you want it to go to.
And what you'll end up with is this warning
along with this boiler plate around the link
that you'd like to take a look.
So it's really easy to put in links
and give somebody a forward.
They can go on reading if they wish.
I'm thinking that-
- I actually spent some time on this page some time ago
and I wish the warning had been there right at the outset.
- Yeah.
(laughs)
Yeah, but in any case, there's a number of pages.
To me, most of the candidates for this sort of information
would be the ones I've categorized as archive.
Because I've already gone through and said,
I don't think this is current anymore
but I don't wanna toss it out.
So those ones, I think it's easy to type in template
and then find a link back to something
that might be more current.
To me, it's an excellent opportunity
to bring the wiki up a notch as that's done.
And I'm thinking as I have somewhat busy time
that I wanna spend listening to music
or whatever, it's an easy thing to go through
and start adding this.
I guess 'cause it's a template,
these words aren't gonna get interfered
with your searches, right?
- No, they won't.
- Yeah, so that's a good thing.
- Yeah, I hit the edit page.
I don't hit the read page for crawling.
- Yeah, so all you would see is template.
And so that's not gonna trigger anything.
- No, in fact, I can explicitly ignore it
if I know it's coming.
- Yeah, so that's what I was gonna mention
'cause I think that's really a great idea.
And as I said, I'm gonna go start in
with pages that I've got marked archive.
I'm gonna start adding these and looking for links
that would be more useful
and hopefully make that more useful that way.
Anybody else is free to do an exploration there
if they wish.
It can be a rabbit hole, there's no doubt about that.
But I think it improves the experience a bit
as people go through and find things like that.
- Yeah, well, it's much better than simply categorizing
deprecated material or suspect material under a category.
Because if you do a search and find it,
you won't know that it's categorized this way or that way
unless you check explicitly.
- Right, especially since I've been hiding
the categories up until now.
So you would see it if you'd gone through the,
you found it through the tree
because it would take you to the archive branch of the tree.
But that's not how your general search is gonna come in.
But as Skip had mentioned before,
unhiding the categories, I think is a positive step.
And that will help,
but also because they've already been categorized this way,
it's not that hard to go find them.
So there's a relatively low hanging fruit there
to clean that up.
- Cool.
- That was about all I had with regard to that.
I really- - I had a question.
- Yeah.
- So if you have the JQT session up on your computer
and you want to open up all the stuff
that Ed's been building,
is there something in the menus
about their file edit, view, run, tools, project help
that will automatically launch as wiki analysis tool?
- Why don't you bring up the JViewer page, Bob,
since you're sharing.
- I shall.
- I'm just saying if I've got JQ,
I wanna launch the JViewer.
- Okay.
So there's a right in the middle there,
it says to set up a control shift H launch shortcut in JQT.
That's how you do it.
- Check right now, it's a super secret
unless you're in this group or not, you know,
because the control H is not anywhere on the menus.
And again, JQ-
- Well, the JViewer is not built into JQT.
You've got to, it's an add on like any other.
You've got to install it.
It's not a privileged feature.
So if you want a keyboard shortcut,
you've got to set it up using these instructions
just as you would set up a shortcut
to launch any other add on.
- Yeah, okay.
- I wish JQT were privileged, but it's not privileged.
- Okay, all right.
Well, I just, 'cause I just, I try to think,
try to remember, how do I launch?
Oh yeah, it's control H, okay.
But I said, well, maybe it's in the menus up there.
No, it's not in the menus up there.
- Oh, sorry.
- No, what's being done there, Skip,
is that you're actually creating your own user key.
And you can use control shift H,
but you can also assign any other key combination.
I've got mine signed to F12.
So I just go to a function key, yeah.
- It'd be nice to have a user menu
that you could then install time, add to.
- It does, doesn't it?
- Yeah, I believe.
- Any user key you add, it shows up in the user,
in some menu, I forgot what the menu is.
- I believe it's an edit and configure.
I think user key shows up there.
That'll probably, I'll have to, I don't think.
- Not the shortcut though.
I mean, there's, configure will bring up the thing
that gives you the list of user keys.
But I don't think there's a place where,
there's not like a user,
we have file edit view run,
there's no user caption up here.
- Yeah, but there is a tool.
- That we can add menu entries to.
- If you bring down tools
and select the user defined keys menu option,
that'll expand to all of the user defined keys.
And it actually says JViewer.
- Ah, you're right.
- Ah, there it is, okay, you're right, you're right.
I got it.
I had to go down there that far at the bottom,
user defined keys.
I only got one thing, user defined key on my list
and that's JViewer, so that's good.
- Well, there you go.
- Okay, so that solves my problem, okay.
I just, I guess, I think JViewer at some point
ought to be raised up to something that's like,
okay, here's the really powerful tool
for analyzing your stuff.
So, you know, but unfortunately right now I understand
you have to upload a lot of stuff to get it working.
So that's the--
- Yeah, I do, unfortunately.
Skip, I appreciate that and maybe someday,
but for now I'm afraid it's on you.
- Yeah, 'cause I went through, you know,
some effort to make sure I got everything loaded in,
kept it up to date, you know, and so I didn't,
I was, you know, so then I got away from it.
I was working on a bunch of other stuff.
I was trying to remember the keys that I used.
(laughing)
- Maybe in the tools.
- Yeah, that is annoying, I'm sure.
I'm sorry you had to go through that.
- That's all right, yeah.
I've got it now.
I remember this.
- Excellent, excellent.
- It's like so many things in J is there
if you know it's there.
(laughing)
- If you know it's there.
- Right, right, right.
- And that's a problem with information in general,
you know, people know all sorts of stuff.
A lot of it's specialist knowledge.
- Yeah.
All right, Bob, did you have anything else?
- Well, the only thing I mentioned based on,
just off of that, I didn't have anything else really to add.
I haven't done too much with my main pages
or anything like that,
and I should have done more with CSS grids,
but one of the things I was gonna say is
that was one area that I was pretty impressed with
with the primer as I went through and rebuilt it.
It really does take you from a very low level
all the way up to doing basically a GUI and an application.
And I mean, it's not gonna cover everything,
but it gives you so much along the way
that I think it considerably reduces the amount that you,
you've learned enough along the way
that you probably don't feel like,
this is every time I turn around,
there's something I don't know.
You at least have a framework.
- This is what you call a primer?
- Yeah, the J primer.
- The primer?
- Yep.
- The J primer, okay.
- Yep, the J primer.
- If I go to,
oh yeah, if I go to the wiki and type in primer,
let's see what happens.
- It should take you to that front page.
- It says help primer, primer contents, perfect.
- You can click on it and you start from square one.
- Perfect, okay, got it, got it, got it.
Okay, that ought to be,
that ought to be on the front page,
the big bold letter.
- Unfortunately, there are many, many things like that,
Skip, it's a question of selecting.
- The newcomers page just has a little bit more precedence
for it on the getting started with J,
it's one of the books that's mentioned.
And in the past, it hadn't been updated until last summer.
So as a result, there was no real reason
to put it over any of the others,
but now that has been updated
and probably should have a more predominant position
getting started.
- Yeah, if I click on getting started,
the page doesn't, I don't see any word of primer
on the front, on that page.
- I think it's under books, it's with the rest of them.
- Oh, okay, okay, okay.
Well, I think Skip's point,
and it's actually a really good one.
JQT, nevermind the console for the moment,
but JQT has a couple of things.
It's got NUVOC, I think it's got Forins,
I think it's got, no, it may not have Forins,
it's got WD.
And probably JQT should have more documentation help
built into it.
I shouldn't have to go to a separate wiki to find it.
- Yeah, 'cause I like it when I click on help
and click on vocabulary, for example,
bam, it pops up my browser, pops up the vocabulary.
It's perfect.
- Yeah, there should be,
I think I agree with you, more like that.
I'm not sure what it should be,
but it seems as if we should be able
to provide more assistance at the JQT level.
- Yeah, that makes it handy,
'cause a lot of people will say,
oh, okay, I'll load up JQT
and we'll see what happens,
and they click on help.
Okay, now see what I can do.
Vocabulary is there, which that's eye-opening right away.
Oh, okay.
(laughing)
- It's eye-opening.
I'm not sure how helpful it is
when you're just starting out.
- That's exactly right.
- Yeah, right, Forins are there, right.
- It reminds me the first time I opened up
the APL instructions.
Oh, that's interesting.
Symbols instead of words.
But of course, after a while, I was like,
man, I didn't do too good
in my high school typing class,
so the fewer things I have to type,
the better I'll like it.
(laughing)
- The one area I've always wondered about
is hiding the labs and the demos in another layer deep,
but that's a choice.
I think on the previous interfaces,
it actually had, instead of having the studio under help,
I think it was on the main menu,
which made it a little bit more useful.
- Yeah.
What does search search, Bob?
What does search search?
- I'm sorry, the top most menu item in the main menu.
- Oh, that's a good question.
Let me see.
Adverbs was what we were talking about earlier.
- So no results found.
- Yeah, and it took me to the main page of my,
it jumped out of,
unfortunately I was only sharing the terminal,
but it took me to a page on the,
this getting started page on the Wiki.
- Oh, all right.
That's something.
- It's something, and I'm not sure
where other terms would have taken me,
but it didn't really return a list of options.
It just took me to one place.
- Right, I was just curious.
Thank you.
- Yeah, yeah.
- Anyway, that's about all I had really.
- Ditto.
Ditto.
- Yeah, ditto.
- Okay, we're dittoed all the way around for the Wiki.
I did get Jig working on JHS somewhat.
>> Ah. >> Let's see.
Here. I have to share screen.
So we're on the JHS screen. And so if I type something in like this,
I'm going to get that kind of stuff back. Characters are going to look like characters
and stuff, but there's no adornment there. I've got to the point now if I type in Jig,
that triggers me into Jig mode. And now when I do the same thing,
it initially shows it exactly the same way. So there's no overhead at this point.
So I could keep typing in things as much as I wanted. You know, something else.
And I'm just going to get the same kind of response, but in between, I'm going to get a
button that I can click on that would show it to me in Jig. And if I click on this button,
then it's going to show me in Jig. This little artifact here is the result of the Jig verb
running and returning 00. It's got to return something. At least at this point, I haven't
gone dug deeply into that. But there's two things with that. I don't want it to ignore that because
I want it to be able to show the shape 00 if that is in fact what I'm typing in. So if I went I.00,
oh, that's interesting. It didn't want to do anything. Okay. So there's something else I've
got to work out. To me, that's what I was trying to avoid not happening. And if it's going to do
that anyway, then I guess maybe I'll get rid of that little 00. I'd like it to show this. And
that's why it's showing it there. Because it's showing it's an integer in shape 00.
The other thing is, whenever you've got one of these buttons, I can click on it,
and it'll go back and it'll bring this in for me. So in other words, I can go back and click
on things out of order. So I can work my way down and type in a whole bunch of things.
And I may or may not be interested. I might be interested later on to go back. And this is
another bug I have to clean up. I have to make this button expandable for the text
so that it recognizes what I'm patching in here and expands the button out. But
I just didn't get around to that yet. But if at some point I decide to go back up and click on
this because it's not of interest to me, it wasn't before, it's going to come back and give me that.
So essentially, when I'm in Jig mode, I've got a way back to looking at whatever I've typed in
before. And I guess if you had a name in there, it would use the current definition of the name
at the time you click. Yeah. Let's see. Let's say...
And nothing's really getting returned there. So that's fine. If I type in A,
and I would click to view in Jig, and that's what it's going to give me. Yeah. And if you change A,
it'll show you and you click to view that, it will show you the changed A, right? So if I change A to
I.3ming, and then I type in A, and I click on it, it's going to show me the other A.
And if you click the previous one, it would also show you the same thing, right? And if I click on
this one, yes, it's going to show me what the previous A was. No, it's not. It's going to show
what the current A is. Oh, it's going to show me the current A. That's right. Yeah, that's right,
because it is actually evaluating this in that case. Yeah.
Hey, Bob, I think you're definitely on to something totally cool here. I'm finding it confusing and
overthought. And what I wonder is if it couldn't be significantly... Right now,
turning on Jig is an investment. There's going to be more stuff on the screen.
And you got to be okay with that. And that's a disincentive to turn on Jig. Real estate,
even in this day and age, is scarce. But it's also just sort of confusing what's happening here.
So what I wonder is, could you, instead of having a button that says, "Click to view A in Jig," which
seems like more information than I need, could that button just have a J? It's just
a one-character label. And it's a little teeny tiny button. And it's to the left of whatever it
is I can view in Jig. So it's to the left of 0, 1, 2, 3. It's to the left of 0, 1, 2. It's to the
left of A, whatever. And so when I turn Jig on, there's almost zero overhead. I'm going to get
this little J button for all of my results that come out. But that's a very modest cost. It's
not costing me any lines at all. And everything still behaves normally. I can click on a previous
line and press Enter, and it'll duplicate down at the bottom, which is really all I'm going to need
to do. I don't need Jig to provide that facility for me, I don't think. But anytime I want to,
I can click that J button next to whatever line I'm interested in, and it'll go into Jig mode.
Yep. No, that's a good idea. Reduces the screen real estate. And then the only thing I'm wondering
about is, as you say, when you click on a line, put the cursor on the line, hit Return, it brings
it down to essentially the input for the next step. I would guess that you wouldn't want the
button to travel with it. Well, no, it isn't output yet. It's input at that point. So the
button isn't there. Right. So...
I mean, you actually probably wouldn't be duplicating lines that have the Jig button
next to them, because those are output lines. Typically, you duplicate an input line. It's
rarer to duplicate an output line. So you duplicate I.7, you don't duplicate 0, 1, 2, 3, 4, 5, 6.
In JHS, when I type in I8,
it has redrawn I8 and this. It actually puts this in together.
So when you see this here, it's not the same one you typed in. Yeah. It's output.
Well, it is. But from a programmer perspective, conceptually, it was my input line.
It was originally your input line.
Implementation happens to be... Sorry?
Yeah. Yeah. Yeah.
Implementation happens to be that JHS is a little peculiar about it, but it's still an input line.
Right.
Right. So what'll happen, like what you're suggesting is say you put a circle with a J
in it right here. It'll come back up when you got your answer. It's going to pop that
button in there, right? It's going to show up there.
Yeah. That's the idea.
Yeah. So if you highlighted this, you'd probably only want the I.8 to come down with it as an input.
Probably. No, actually, I'm sorry. The button doesn't show up next to the I.8.
Here, I'm pointing with my cursor, which is pointless. The button does not show up.
It does not show up there. Okay.
No, it shows up next to 0, 1, 2, 3, 4, 5, 6, 7.
Oh, okay.
So 0, 1, 2, 3, 4, 5, 6, 7 is shifted over a couple of characters to make room for the JIG button.
Okay.
In either case, I don't think, even if it was by the I.8, I don't think that it would, that
the JHS UI design would bring down the button because that would be markup and not content,
and it only brings down the content.
Oh, right.
Right. Although that button would be an SVG.
But still, it would be, SVG is markup. It's not content as such. It's not.
Oh, I see. Okay. Right. Yeah.
I think it wouldn't be. I haven't verified that the code would necessarily ignore the SVG,
but it seems like it should because, you know, it's not.
Yeah.
If you look at this close, there's a bunch of markup already on the line.
That stuff doesn't come down.
Yeah.
It's reproduced.
The challenge with putting it to the left of the numbers is that
what you need to do is you have to be able to shift over however many lines this output is.
So.
Let me not. Three, four.
If I had the button show up here, it would shift this line only.
It's actually putting a break. It's doing it via HTML.
It's putting a break in between each of these lines, and that's how it's displaying that stuff.
Right.
That's why the boxes look so weird sometimes.
You could probably do something with grid if you really were pressed.
Crazy. Yeah. Yeah.
Maybe you put the button on the right.
Yeah. Yeah.
That would be a lot easier.
And I played around with that at first, and it sits out there to the right.
I went, and I don't have to make, I don't have to put this information in there.
I could just make this a little narrow bar.
I wanted to identify it so you knew what you were going to see.
Sure. But.
I mean, the first time I click on the button, it's going to be very clear what
that, right.
As clear as it is now.
Yeah.
What happened.
Right. Click to view A in Jig doesn't really tell the novice anything about what's going to
happen when he clicks that button.
Because he doesn't know what Jig is.
No, no.
But that's why you have to turn Jig on.
You have to turn Jig on and off at the beginning to start with.
How does that help me know what it's going to do?
Well, you have to know what you, why you're turning it on and off.
See, what I'm trying to do is get you to the point.
Yeah, yeah.
No, I know.
You can just leave it on.
Yeah.
It's not something you turn on.
It's something that's on by default.
And maybe one of the things that happens when you click on the button is you have an option
to turn it off in addition to getting the Jig output.
I think this is really nifty, and I think it needs to be integrated.
I don't think it needs to be.
I think it's better if it's not extra trouble that I need to learn about.
Let's make it so lightweight that we can just leave it on by default that won't bother anybody
or few people most of the time.
There is a weight with it.
That, and that is when you take a look at this, you are, have, the cost of the extra
information is it's a much bigger memory footprint coming in on this as opposed to this.
But not with the button.
No, not until you click.
When you click the button, you're introducing that.
Yeah.
So there you go.
I mean, in terms of not getting in the way of the user who most of the time isn't interested
in Jig, we're doing pretty well.
Yeah.
And on those occasions where somebody, even somebody who says, oh, I never need Jig, but
he's getting a weird result and he wants to look for extra axes and type problems and
so on.
All right, click the little button.
Fine.
I'll do it.
And it's a very easy way to get all the information you need, all the annotation that you need.
But right now it's work.
I need to know to type in Jig quote, quote, I need to know what Jig does.
And it's, that's crazy.
You're dramatically reducing your potential market by doing it this way.
Yeah.
No, I get you as a built into the, I'm looking at it still as an add on.
I'm not looking at it as a built in.
No, I, the goal should always be to have something.
I mean, my goal for it's not now, but maybe a year from now, I'm hoping to get, um,
Jade, you were to the point where it's much more tightly integrated into the ecosystem.
Yeah.
That's something I'm going to have to earn.
And there's a huge random component to it.
And I get that, but that, that would be my goal.
And I think Jig is light enough weight that you could do that much sooner than I could.
I there's, you have, you have a way of, of sending a command to the server without it and
getting a result back and not having that command go into the input log.
Right.
Is that correct?
Um, right now, if I click on a button, it goes into a J X C, uh, underscore run,
and then it, it runs what it's been given.
And it provides a different output than what it would be.
If it were, if I, if I entered the same command without the X E X C run,
essentially what I'm doing is I'm, I'm, I'm using, um, I'm using J to, uh,
I'm using JavaScript to trigger a J verb.
And when it triggers the J verb, it triggers a J X C run.
So conceptually, if you, we, I just threw into, um, into chat a link for how to do a J query pop
up with a clickable content. And so hypothetically, you could have one of those and everything with
class equals log to take the, um, the corresponding, um, log entry and send it, you know,
do a required jig and then, um, do a jig display of that executing that line.
And then at that point just becomes, you know, you mouse over the input line and you have a
little tool tip that pops up in that tool tip. You have a button that you can click to do it.
And then it would show up.
Uh, yeah, it's already available in JQT.
It doesn't work the same. This is JHS is different. JQT. It's, it's a, it's a really
simple thing. There's a lab I did on it. And so if you go through the lab, it can take you through
the whole process of creating shortcuts and all that kind of stuff. And I, I have a, I put a
shortcut on my computer. So if I, if I click on a, if I put my cursor on a line that's executable
and I hit that shortcut, it's going to have a pop-up window that shows me the jig view.
And it has all that accessible to you. It's, it's lived in JQT now for about the last seven or
eight years, I think, but it hasn't been in JHS. Okay. Okay. Yeah. So anyway, Rob, what you're
saying is. Okay. I was just going to say, it'd be interesting to have, I like the pop-up. It'd
be interesting to be able to do, uh, you know, kind of a graphic parsing of a, uh, you know,
of a line with some, you know, something that says, okay, here is, I forget what we have that,
what we have, what we, what we call that utility that goes in there and says, if I type in a line
of J, it'll go in and show the data structures as it goes through the parse, you know, and,
and that's what I'm supposed to be working on. And that's what, this is the first step of,
I wasn't thinking of as integrating it with JHS, but I figured if I could get it integrated with
JHS, it's actually a simpler step for me to develop a page that only has this information on
it. And then I'm on my next stage, which is to diagram a J sentence and have it operable.
Yeah. When I'm, when I'm explaining J on these Cora things, I'll lots of times I will go through
and I'll write the one liner, you know, that solves the problem, but they'll always say,
well, how did this work? So then I have to go there. Oh, this, this symbol here does that,
then this symbol does that, and this symbol does that, you know? And so I basically do what you're
explaining, what, what, what the debugger, you know, would, would do. And it'd be cool if I
could just click a button and there's, there's the description of each part, step in the parse.
That is the end goal.
Yeah. Skip, I think you're onto something. Just, just an annotative button that had all kinds of
interesting features. The jig button that we've been talking about goes with the output, but there
should also be a button on the input line as well, a different button.
Absolutely. I mean, I can't tell you how many times I looked at it at somebody else's J code
and said, what's it go, what happens right here? So I have to type it in, you know, and then look
at the output there and oh, okay. Then, okay. Now I see what's going on. So it'd be really great.
You could just, you could just say, turn on the, turn on the parser tool and show me all the data
structures as it goes through. I mean, that that's a, I know that's a, a, a, a graphical
headache because you got all this graphic stuff, but.
Um, yeah, I think there's, there's, um, it's, it's, it's not, can I say it's not simple.
It's, and it's can be complex. Yeah. So it's got, it's got some obstacles there,
but Raul, you were saying with the, with the pop-up. Um, so for instance, if, if I was to
create an SVG, could I display that SVG in that, in that pop-up that message?
Well, I guess that's one way of doing it. Um, I wasn't thinking of doing it there. I was thinking
of having it show up in line, like you're doing here. Um, but I guess, you know, hypothetically
speaking, how long does it take to generate the, the, the jig if it's quick, I guess.
Oh, it's well under a second, unless you went to add something. I mean,
they're very quickly, you could, you could do a, uh, you could call out to the server
to, uh, generate the thing every time you needed it, maybe cash it.
So it comes back quickly the second time. Um, okay. So I'm not, so, um, I haven't looked at
that link yet. Uh, I'm just going to stop sharing. Um,
but I was thinking of doing this button here that you have in line, having it be a tool tip
or part of a tool tip rather than being in line. So it wouldn't take up screen real estate.
Uh, it was a much, I had a much simpler, um, and then it could, it could also do the required jig
or maybe even the, you know, install or something. Yeah.
Couldn't be hard to put it in as a tool tip because that really is just a title, isn't it?
For a div? Well, that JHS uses jQuery. Okay. So you have, you have, you can do dollar sign
parentheses and do all the jQuery stuff. And the page I linked, I gave you there.
Let's you construct your own tool tips using jQuery, which can have clickable content.
Ooh. Okay. So you could put an SVG inside a jQuery pop-up.
That would be, that's an even, that, that would say perhaps more direct approach than what I was
thinking. A little more. Um, but, um, what I was thinking is I was just taking his, his, his click
to view in jig thing and saying, why don't we move that into a tool tip? And of course the obstacle
is how do you make a tool tip that has a clickable like that? And that's what the page that I
referenced, I threw in a chat. Oh, I see. Yeah. All right. But I, I like also the idea of not
pushing the jig output into the terminal, into the transcript, because that's more pollution.
Right. I'm not primarily trying to use jig. You could have it be a, you could do
page pop-ups too in jH using, using this mechanism. Whatever. I just, that's a pop-up
and just leave it there until I click close. Or maybe you could just stick it in a tool tip pop-up.
Maybe that's what happens. You could do that too. The question there is what if they move away,
but I guess if they move away, that's their, their problem. Yeah. You click again if they
want to, or maybe you have to, you know, if you, if you're going to click and it's going to be
there, you might as well just go the whole shebang and do the, do the query for them and, and put
that into the, into the tool tip. Yeah. Yeah. I'll have to take a look at this. And I didn't know
jHs use, I mean, I figured it's, it can use jQuery. I thought Eric had created all his own little
methods to adjust. Right click on the page and do inspect.
And then once you've got the console up there, try something like
dollar sign, left parenthesis,
quote dot log, and then close it up. The quotes and parentheses.
I'm not, so I'm doing this through the elements I'm looking at.
See just to the right of elements is console. So click on console. Yeah. Okay. And there type
dollar sign, left parenthesis, quote, single quote, or double quotes. It doesn't matter.
It's JavaScript dot log, and then close the quote and close the parenthesis.
And then just hit return. Yep.
That's not found. Well, let me see what you type.
See, get back to my Zoom. Here's screen.
Seems like all these should be toggled on and off. If you're in jQt from the menu,
just click on tools and toggle on, you know, tool tip or toggle on whatever and toggle it off.
And then you don't have to put anything in the actual pack itself.
Okay. So that's what I typed into console here.
Or it actually--
That's a search bait. Go down to the prompt at the bottom and type it in.
Yeah. Type it down. See where the left angle or the right angle bracket is?
The greater than sign?
No, I got it down here. Yeah, it was in the wrong spot. Yeah. Okay.
Okay. So my console's open now.
Is what it's replied with.
What is it? Oh, clear your search thing, maybe.
There you go.
Okay.
So, see, with that, my belief is that dollar sign here is jQuery.
And that, you know, this is an example of interacting with jQuery. And that result is
what jQuery gave you. I'm a little bit surprised that it only has one element there. I was
expecting it to provide an array of results, but that's a separate issue. My belief is that
dollar sign is jQuery, is the jQuery implementation.
Are we trying to establish whether Eric uses-- has jQuery loaded up here?
Is that what we're trying to do? Yeah.
Okay.
Okay. Well, I could talk to him about that and see where he wants to go with that. I
just think, to me, if there was a way to click on something-- now, the other trick I found
is the divs aren't clickable, for whatever reason. I think he's chosen so that you can
select parts of it. He's made them pass through.
They're not clickable? I'm not sure what you mean by not clickable. Because I'm playing
here with a jH session. I can put my cursor anywhere in my session.
Yeah. But if you click on something that's, say, a div--
just-- I'll take this off.
So, right now, I'm just in standard J. So, if I type in--
if I click anywhere here, I can move. I can click. But I can't-- this is all one div,
right? Right.
Clicking on it is not responsive. If I put an on click in that div, it doesn't respond.
So, my guess was that he's made the divs transparent, like the pointer events are none.
Let me try.
So,
oh.
And then these are all the divs you're talking about, I think. But that's,
I'm looking at them in Elements.
So,
that's that. So, I'll do this. I'm just retrying to reproduce your results here.
OK. I can see that that is indeed the case that I'm not getting--
oh, wait. I did this wrong.
So,
maybe that's not jQuery, then, because there's no $signed on.
Yeah, I don't think--
It's a work-alike.
Yeah.
I think he's done this all by writing in-- and I think at one point when he is leading to JHS,
I think he actually says that he had the option to go with some kind of a framework.
But by writing his own, it's much lighter weight. He's not trying to do things that other
frameworks are trying to do. He's just doing JHS.
Yeah.
And there's, within the add-on, because JHS shows up as an add-on, it's-- there's actually a
JavaScript core script that has all the JavaScript that he's written to support this.
I should talk to him about it. I mean, that's-- he's going to know--
The easiest way to do that-- I think I can create the pages, though, that can do this
interactivity. So that was the first big step. And then the next step is-- and I really would
love to be able to do it as a clickable pop-up. That would be really cool, because that would
isolate the-- all the weight of that SVG would just be sitting in that pop-up. When you went
away from it, it would disappear again. I think that would be a cool way to do it.
Also, it wouldn't mess with the user's work.
Yeah. Yeah.
Again, lightweight.
Lightweight. Yeah.
Cool.
Yeah. Anyway, thank you so much for your feedback. Always immensely valuable, because
I get the blinders on. I'm in-- fighting the fight with JHS.
Thank you. Thank you for your patience and willingness to listen as I pontificate about
what you ought to do. I really appreciate that.
That's right.
No, no, I need--
Y'all pontificate on what y'all need to do.
Yeah, but-- now, you guys saying that I need to do it doesn't mean that I actually do it.
But I appreciate that.
No, no, no, I understand. I understood. But you're very gracious about it,
whether you do it or not. You're very gracious. I at least appreciate that immensely.
Well, thank you. You're the same way with your viewers. So, I mean, I--
I try to be. I try to be. It's not always easy. All right. Take care, gentlemen. See you next week.
Okay. See you next week. Thanks so much.
Goodbye.