Wiki/Report of Meeting 2023-06-08

From J Wiki
Jump to navigation Jump to search

Report of Meeting 2023-06-08

Present: Raul Miller and Bob Therriault

Full transcripts of this meeting are now available below the following synopsis on wiki page.

1) Bob started off by saying that he had decided to not move the CSS to the template page and Raul pointed out that he could just use the template CSS going forward and would not need to change the previous pages that had already been created. Bob also acknowledged that it would be better to do things the right way, as he had already seen pages that had been assembled in the "easiest" way with results that needed more clean-up. He decided to take another look at moving the CSS from the individual page https://code.jsoftware.com/wiki/Help/Primer/001Start_here to the template. https://code.jsoftware.com/wiki/Nav/primer (Editor's note: This has been done subsequent to the recording of this meeting.)

2) Bob moved on to the goals that he had for his work on the wiki over the summer. Principally, to update the Primer to serve as a current document for newcomers. Complete the Newcomers category tree https://code.jsoftware.com/wiki/Category:Newcomers_N so that newcomers would not be exposed to the current information holes because of missing pages and then push out the new look pages on the wiki in the fall.

3) Raul wondered about what it would take to recreate Ed's current wiki browser in HTML rather than requiring the JQt framework. This would enable any user to be given better access to the wiki. Raul pointed out that the real challenge would be to incorporate the forums into HTML as they have a different format.

4) Bob thought that after the new look had been introduced then he would be taking a look at NuVoc https://code.jsoftware.com/wiki/NuVoc to make the information more current. Raul thought that Addons would be the thing that he would like to focus on, https://code.jsoftware.com/wiki/Vocabulary/Libraries creating a standard page that had documentation on verbs and constants and examples of how to use the particular Addons.

5) Raul talked about the feasibility of rewriting JQt to better support threading. It is big project and would involve rewriting in C++ so that you could have parallel threads. This is a project for the future

6) Raul showed that he had introduced sortable columns on the invisible modifiers page. https://code.jsoftware.com/wiki/Vocabulary/ModifierTrains

7) More discussion of NuVoc presentation and Raul's suggestion of having expandable sections. There would be sections that would be initially collapsed that would contain further information that would be easily accessible. This would allow information that is important to be quickly visible and further information to be accessible for those who might be interested.

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 general forum and we will get you an invitation to the next J wiki meeting held on Thursdays at 23:00 (UTC) Next meeting is July 13th, 2023, as we take a bit of a break for the summer.

Transcript

Anyhow, I didn't have a lot to talk about 'cause honestly I haven't done a lot with the primer this week a little bit.

I kind of came to the decision, like I looked at what you were suggesting about CSS and stuff like that on the template page.

But right now I think I'm gonna stay with the way I was doing it.

'Cause rather than go back and try and clean up a template page and sort of hold myself back, I thought I'll just keep doing it this way.

I know it works and I know how I would change it.

So, you know.

- Okay.

- But I mean, all the time I'm kind of kicking myself 'cause I'm thinking, yeah, I probably should go and clean that up 'cause there's lots of times when I look at the Wiki right now where I can see what somebody's done.

It's been a quick fix and then it just avalanches.

- You can create the template and just use it going forward and test it that way.

And then when you're done, go back and retrofit the ones you already had the other way.

- That's a good point.

So maybe I should take a look at that.

And then at least I've got template for part of it.

And then it's going back and cleaning up.

I think I've got 20 pages now, 24 pages that I've done.

But yeah.

It's usually good to have a sense of progress.

Keep you motivated.

Yes.

And that brings me around to what I've got as my sole topic right now is targets over the summer.

I'm going to be somewhat spotty.

Like I think I can make most of the Thursdays in the summer, but there'll be some that I won't be able to make.

There's a couple I might not make too.

- Yeah, so I'm thinking it may not be a bad idea to try at least for myself to get kind of a framework what I'm trying to accomplish and then I can, the meetings become checkpoints so I can come back in and say what I've done and show what I've done then move off and go back what I've done again.

But most of what I think I'm gonna work on is the primer and then building newcomers out enough that I can launch that landing page.

'Cause we really have, I mean, I'm hearing people say things about, well, I'm having trouble finding this.

And I'm thinking, yes, of course you are because your landing page is the old Wiki.

And that's a difficult thing.

And I've got this new one and it's just 'cause I haven't gone far enough ahead with it.

Otherwise I would send you there and then things would be a little bit clearer unless you're a beginner, in which case it's not in a state that I would want to send it to you.

And then I think after that, it's just gonna be a rolling boil of hammering through reference and developers and trying to clean stuff up 'cause there's so much in there.

And I think advantages we've got right now is that browser that Ed's putting together, when that lands, that will really make it a lot easier for a lot of people to find stuff in the Wiki, and especially the forums.

So that's kind of what I'm tying my, if I thought I had to do this all from scratch without that browser, I think I would be looking 10 years out and it would just be creating on me.

But I think I can get to the point where it's pretty usable the next year.

And by the end of the summer for newcomers and then in the next year, rilled up the rest of it.

So maybe it doesn't require quite as much attention.

But that's just sitting in the doldrums, sitting in the Sargasso Sea of the Atlantic and going in little circles.

Now wondering if we could approximate his browser in HTML or JavaScript, the iframes or something.

- At one point I started to look at JHS and seeing whether that was, but then I thought, no, that takes it away from JQT and you don't wanna build something that, you know.

- Wasn't JHS, I was doing pure, you do a browser native version, which would mean that anybody with a web browser could get something, maybe not the full experience, but at least some of it.

'Cause you're saying it's 10 years out, it'd be useful.

And if people have to have software installed to read the Wiki, that is intimidating.

- Although, if, I mean, that would be how you get the maximum use out of the Wiki.

You still have the structure we've put in place and you still have those trees to follow through.

So it's just that, especially for the forums, it's so much faster to pick it out with that browser.

- That's true.

And the forums would be difficult with JavaScript because of the cross site security issues.

- Yeah.

Yeah, to me, that's one of the biggest draws with his browser is what you can do with the forums.

And I'm kind of hoping that I may be able to draw on some of the forum material to pull it back into the Wiki 'cause when you, well, I think, My next target after having it in shape is probably to take a real hard look at nuvok.

Because again, I think that's such a core central, it's, it's the old dictionary, it's the old vocabulary.

Nuvok and add-ons both need some focus.

Add-ons just have so much missing documentation.

I keep meaning to get around to it and I keep not getting around to it.

Yeah, no, I know the feeling.

Yeah, add-ons are, especially if they want to move towards helping out developers, the add-ons become key.

If only somewhat of a template to how to put together an add-on becomes useful if you've got more add-ons that people can go into and see how they're done.

although I guess a lot of the add-ons may be not out of date in terms of functionality, but may be out of date in terms of the style that you'd code.

That's less important.

People that are reading the code for style probably wouldn't need the wiki in the first place because they'd be going straight to the add-on.

true.

But what I was thinking is if you were trying to introduce somebody to creating add-ons, you might want to.

.

.

I mean, I don't.

.

.

The tools I'd be leaning towards there is just loading the add-on and doing names for if it has a locale that it uses, and looking in the add-on itself for comments and for other documentation hints and extracting that.

That would be a first pass.

The second pass would also be looking for labs and other other Wiki content that you link to or maybe even you know other web content that it linked to that that would give hints and such.

And then you know a editorial pass or readability pass that tries to flush out you know maybe with some experimentation, flush out the page.

So are you thinking then of taking like an existing add-on and then essentially annotating it, putting links around it.

Well no, I'm talking about creating a wiki page, creating the add-on wiki page.

So this is how I reconstruct how I extract content to put on the wiki page.

You can have a table of here's the verbs, just like the standard library type of approach.

And having name and purposes is important.

Having a few examples is really helpful and having like an overview of some hints or you know just having other perspectives can be helpful.

Yeah there was, I think actually you came in and there was a question in the APL form about the, I guess using the modifier, the invisible modifier trains and the first thing, I looked at that, I could not figure out what it was that he was trying to do with that power function because I didn't know whether it was dyadic or monadic or what the nature of the verb he was using was going to do.

Like I just popped a few in there and it was like, I can't get this thing even to work with.

I was going to ask for an example myself, but he put one in there with his renamed version and that made it readable.

Yes.

Yeah.

And then when I got that, I went, oh, okay.

And then by that time, you'd put in the tacit version of that.

Yeah, because it was based off the same thing that you saw.

It's just I saw it a little bit earlier.

Yeah, yeah.

But yeah, it really is hard to figure out if you don't have, you know, as much as everybody talks about readability, if you don't put in an example, or what was the thing that Rick Sherlock used to do is he used to put right in the header of the, put a comment right off the top of his verbs about whether it was dyadic.

And then I think he would also throw in an example of the arguments, just in linear.

So if you looked at the verb, you could say, "Oh, if I pop this in here, it'll work.

Now I can see what it's doing.

" And just that simple step made a huge difference to figuring things out.

The examples give you both something tells you something about the domain.

It's not the full but it tells you what the domain is.

And that's really important because you don't know if it's integer, float, positive, negative, vector, matrix, whatever else.

So it gives you the domain.

And it also gives you some hints as to the purpose and knowing what the data looks like is just essential for visualizing the process.

And sometimes if you were actually trying to go in and either clean up the code you know, make it a bit quicker, it really helps because you, if you know the data, you know, yeah, you know where you're trying to make it quicker or whether it could be done.

Yeah, we didn't see when I did that test version of the origin, Adverb was, I actually had set up, you know, I expanded out his example, so it was an inline thing.

And then I was working with that.

And that was my test case.

Every time I made a change, make sure it came the same result.

Yeah.

And so anytime I made a mistake, I immediately knew it because it didn't give the same result.

And that's kind of essential for working with CODIS having good test.

Yeah, no, I do that a lot.

And all the stuff that I've put in is add-ons.

I've got a, well, the jig, I've got a, I've essentially used, is it five, the 5-4 conjunction.

No, no, it's a 5-6 conjunction.

I think whatever it is, it will actually, you give it an argument and it will actually, you have to give it an assigned name boxed.

And so you take your original and you assign it to a name and then box it and then evaluate it and it puts out a linear version of what you've done.

No matter what the shape is, no matter, you know, however complex this structure is, it puts out a linear version.

And then all you have to do is assert that that's equal to what you're sending out when you actually run it through your new system.

And so immediately, you know when it's not, because even if it's out, and this drove me nuts in the first couple of versions of JQT, they would change something, and it would change the tool tips slightly by like a space, and suddenly all my tests were wrong.

And it was just like, I just have to go, you know, all you can do is go through them, clean them up, go, "Yeah, that's the same problem.

Yeah, that's, oh, this one got through.

Okay, yeah, that's the same problem.

" Because I know it still works, but then I would have to create a new one, new tests bed for the version.

And I probably come up with this, should have come up with a smarter way to do it, but at least I had it.

I knew right away if it was working, if I came up with a version where things didn't change, run it through and bang, it went.

And the last three versions of the 900s have all worked.

So I just run it through, I go, "Oh, it's passed everything.

That's great.

Done.

Nice.

" We was suggesting I rewrite JQT, but I haven't gotten very far on that yet.

The rewrite would probably break a test again.

Well, it wouldn't be the first time.

(laughing) - I was just saying, how do you rewrite JQT.

You actually, are you writing it in J or you're taking it.

- No, in C++.

The issue is JQT's design is single threaded and that's because QT's design was originally threaded but then it turned out that they had made some architecture, they had run into some architectural issues and they forced it to be, has all this threading stuff that you still have to use it to thread or it crashes.

And so now you have to follow these policies for how to make it multi-threaded.

And what we have written doesn't follow those policies.

So it's gotta be completely redone with a completely different way of passing the arguments around to support threading.

So all the UI work has to be on the main thread, and which means that other threads need to marshal their arguments in a certain way and so on.

So anyways, so it's a big project and I'd have to be learning, I'd have to be learning QT while figuring out how to, while fixing it.

So it's something I've just dipped my toe in the water a little bit and I haven't got very far.

So right now in that case, what platform is best set up to deal with parallelization.

Is it.

Well, when you're dealing with JQT, what you need to do is make sure that all JQT interactions happen on the main thread.

You can do computation elsewhere, but not I/O.

Gotcha.

And that has to be, that J has to do, that all has to happen on the J side.

If, with the opposed rewrite, what could happen is any J thread could talk to JQT, and then you just have serialization issues to worry about, you know, ordering issues.

But as long as you did your code sanely, it wouldn't crash.

- Yeah, I ran into a problem with creating windows in JQT.

They become a process, but you don't actually have access to the process number.

So you can't kill them.

So what I do when I'm doing JIG is I load up 10 windows Windows, essentially ready to go.

And then I've got an interface where if you want to hang on to it, you can, you can archive it.

And so that creates an extra window.

And then looks through the-- - It's like there'd be a way of getting those process IDs.

- I talked to Bill about it.

He said, no, he says, all I've got access to is the overall ID, the process ID of Jay.

I can't get to the individual ones.

I mean, they have a number, they show up as a process, but he didn't have a way to get back to them.

- I guess I'd have to take a look at the example that might be, there probably is a way, but.

- Yeah.

But it might involve a rewrite of JQT.

- Well, that probably won't be a rewrite, but it might involve an extension, you know, an additional verb or something that you get at.

'Cause JQT has access to the OS, nothing else, the OS knows.

and there's an OS call that says, "What's my PID.

" And so it's in C++, so you can just call that.

But if you have access to the process, send a message saying, "This, come back.

" It's probably a little bit of work, but it's probably solved.

Anyways, that's how I solved it.

Create 10, cycle through them, and if you want to save one, you can.

Now you've got 11.

When you shut J down, everything disappears.

So worst case, if you say went through 50 of them, which would surprise me, you want to leave them to be able to look at them.

You've got 50 extra processes, orphans floating around until you restart J, which isn't a big deal.

One of the things that I was working on that origin thing, that table for trains, that I made it sortable.

Okay.

Because I wanted to see what were the trains that create adverbs.

And to do that, I had to be able to sort the results.

And did you do that to both the pages.

Cause there's Pascal's page, which is the further link.

I only did it on the one, on the one page.

It wouldn't be hard to do on Pascal's page.

No, I know.

No, I'm just wondering whether if we, if I direct someone to do it, It works on one page, it wouldn't work on the other.

But I'm just trying to remember, I think I had to negotiate with Henry 'cause he didn't wanna make a big deal out of the tasks that modifiers.

And so as a result, he didn't wanna put Pascal's information on that actual page.

And I said, well, it's really valuable, why don't we just put it as a link.

He said, oh, I'll put a link, yeah, it's no trouble.

But then the first thing that happens with the guy that we're talking to is he doesn't see the links, so he doesn't have access to all that extra information about the way the modifiers change their hunger for the way they group themselves.

- It looks like Pascal has two accounts, one with the space between his first and last name and without.

- Huh.

but I'm not seeing his modifier trains page when I.

.

.

- Well, it's a link off the modifier trains pages to the bottom.

- Oh, it is.

- Yeah.

- Category VOC.

I don't see a link down the bottom.

You sure it hasn't been merged in.

- I'll just take a look.

Ah.

Oh, maybe it was Pascal's page that I modified and not the main page.

Let me fix the main page.

I'm going down to modifier trains right at the bottom.

And then I go to the bottom of that.

I see discussion examples of invisible modifiers.

Yes, you've got that sortable now.

So that's the one you sorted, is his, with the examples below.

That's easy enough to fix.

Yeah.

There.

Unfortunately, it's not just making it sortable.

You also have to use exclamation points for the headers.

Otherwise, it doesn't know what you can sort on.

And there-- oops.

I keep messing with my touchpad.

And the styles change when you switch from exclamation point or from vertical word, exclamation point.

So that, so hopefully this looks good.

Yep, that looks plausible.

I'm going to save it.

- So what's happened there is they haven't defined their first row as a heading, so you can't sort on it.

- In the original form, right.

- Yeah, yeah.

One on there and hit save changes.

Okay.

There it is, there it is.

So now it's sort of.

- And yep, I see it as well.

Perfect.

And so now when you're sorting for the train, does it take the first.

- It sorts it alphabetically, and what I find useful is sorting on part of speech.

Right.

Because then you can group them that way.

Yeah.

Right.

Because I know what I want to go into the thing that I'm building, but I don't know what all the possibilities are.

I haven't memorized them all.

So what I want to do is I want to scan through those and see if any of those are useful for what I'm trying to do.

And your quick search is going to give you exactly the same sort as your train, right.

Because they're just essentially abbreviations.

quick sort, quick search and train do look very similar.

There's a zero one two, but that should be irrelevant.

- Yeah, I don't see any other numbers introduced other than zero one two.

Well, I guess-- - That's just left to right order.

- Yeah, exactly.

- So yeah.

then I guess the only, well I guess the only other thing is you do have the blanks which are the ones that are more common that can create anything.

But if you do sort of that they're at least isolated that way.

Yeah but those are executions so you already, you've probably, you know, if you're familiar with J you probably already have those memorized.

Exactly.

That's what, that's what either, that's what it does.

Yeah.

It's one verb or one conjunction or whatever that's taking effect.

Yeah, yeah.

Yeah, that's good.

I mean, I think that makes it, you know, helpful for people.

I can see Henry's feeling about not wanting to put all that extra information in, because I think initially when he brought that whole functionality back, he thought if I throw too much in here, I'm just going to get unending questions about how this works and I did want to get rid of it in the first place, so I don't want to do that.

I'm thinking we should, some of these big pages should have collapsible sections which are pre-collapsed that a person can expand, you know, that way a person will quickly see the important stuff and the advanced stuff will be for people that know that they're interested in it.

Yeah.

Yeah, I think if you, I'm thinking that that might be a good format to look at NUVOC going forward, is to create, like not have to go in and change all the content, but to go in and select what parts of it you'll keep collapsible and then be consistent across the different primitives.

Yeah, like on this, on the Fort page, the more information section should probably be collapsed, because it's got a lot of detail there.

But it's detail.

And I think last time we were talking about, or Ed was talking about ways to provide, essentially what I think was more information, but there may be a distinction between what he was looking for and more information.

There may be a distinction between links to other things and actual diagrams, I don't know.

But that would be something to think about if we were going in to redo NUVOC, just in terms of its layout.

- The details, possibly all of the, so the common uses section probably should stay expanded, but beginners error details and more information are candidates for collapsing.

And the advantage of doing that across a number of different sections is the more sections that are that way, the more likely people will be noticed that those are collapsed, right.

If you only had one and it changed depending on the primitive, people will probably just, you know, that won't register.

Right.

Right.

Yeah, this is an effort for all of Newbach.

- Yeah, yeah, that's year two.

Anyway, other than that, I don't have a lot more to share.

I don't know whether you want to spend time over the next while focusing on add-ons, what your interest level is there.

- Yeah, I'm trying to motivate myself to do that, but I haven't motivated myself enough yet.

- Okay.

- I'll get there sooner or later.

- Yeah, no, I know.

I just, I'm in the same zone and I'm just trying to figure out ways that I can apply the carrot instead of the stick.

I don't like the stick, but that's why the stick works.

Finding it, setting up short distance milestones.

This is a bite-sized thing that can get me started.

Let's see if we can get momentum that way and then see if people like it.

Let's see if it can work.

That's a great trick.

And then you get the endorphin blast whenever you hit a little milestone and you go, "Oh yeah, I got that one.

" It just gives you that little boost.

Yeah, short term is good.

And so I should probably think about that, what my next page will be.