Wiki/Report of Meeting 2023-09-07

From J Wiki
Jump to navigation Jump to search

Report of Meeting 2023-09-07

Present: Art Anger, Ed Gottsman, Devon McCormick, and Bob Therriault

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

1) Ed did a quick overview of the J Wiki Browser for Devon and reviewed the feedback that he had received on the application, which was very positive. There was a discussion about the interface and the use of ticks in the sliders. The database is currently only being updated once a day and this was deemed sufficient at this time.

2) It was agreed that more beta testers were needed and it was suggested that Ed make a presentation at the next NYCJUG meeting and that Bob would promote the beta test opportunities on the next ArrayCast podcast.

3) Further discussion on the role that categories could play in selecting areas of interest within the LiveSearch on the wiki browser. Possibilities were that certain high level categories might be selected to group the results of LiveSearch into common areas such as Math, Newcomers, Developers etc. Devon raised a concern about the absence of a feedback mechanism in the search tool, which Ed confirmed. Bob mentioned a comment on the YouTube demo regarding the reversal of the expand and shrink buttons. Ed pointed out that this could cause a conflict when the cursor hovers over the browser window, causing it to expand if it had just been shrunk.

3) Bob reviewed the work that he had done on the J Primer with regard to improved navigation and bringing he content up to date. Content changes required included the new manner of creating GUI forms in JQt, a change to the file structure for loading files in newer versions of J, and verbs such as nub count that had not been included in the J libraries since 2007. Bob had checked the results of each step of the Primer using J9.4 in the JQt IDE. Bob will present the new version of the J Primer during the NYCJUG meeting in the Beginner's Regatta section. Bob also said that he would take a look at including the direct definition {{...}} in a future version of the Primer

4) There was a discussion about integrating J into web pages to increase its utility. Bob mentioned JHS as a form that does this, but would require the J engine to be downloaded. Although, this week Eric had updated the methods of putting a J server on an AWS instance so that it could serve as a remote personal J server. https://code.jsoftware.com/wiki/System/Installation/Cloud There was further discussion about including a version of the Primer on the J Playground to allow easier access to newcomers.

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 September 14th, 2023.

Transcript

How has the response been for the beta?

Two people, and I cc'd you and Raul on the inquiries I sent to each of them.

I mean, the bad news is there were only two people.

The good news is they're both happy, or at least they seem to be, judging by their emails.

So I'm not really sure what to do next.

And then I think it was Bill who suggested

that it would be cool if live search

could take category specifications.

So you could say, I'm only interested in hits

that are in j phrases, for example.

And I've spent some time looking at that.

It's not really a question of technically how to do it.

That's easy.

It's a question of how to present it from a user

experience perspective.

I just don't know how to do that.

Hello, Devin.

Hi.

How are you guys doing?

I haven't seen you in a while.

Yeah.

Yeah.

We're doing well.

And you?

Good.

Good.

Good.

Well, since Devin's here, that was one of the things

was going to suggest to suggest about more beta users is whether we Devin's got a

wiki group meeting or not a wiki group user group meeting coming up on Tuesday.

Right I'll be there.

I could present that as again I mean they won't have seen live search.

Yeah yeah no that's true if Devin would be open to that. The Devin the the the thing

the thing that only works in JQT, the viewer, as we now call it, has expanded significantly.

And in particular, it's got now what we call live search, which is J code search, as well as

English token search against the wiki, against the forums, and against most of the GitHub J

software repository. And we've gotten to the point when I say we, I mean Raul, Bob and I,

where we feel like we're ready for beta. And in the last, in the last Wiki meeting,

Bob was kind enough to record a demo, which he does every week. We get about 100 views of that

each time on YouTube. So in the last demo, I just said, "Look, I'm ready for beta." And the fact

that 100 people keep showing up, I assume it's roughly the same 100 people every time, indicated

to me that there was interest in the tool. So I was hoping for a response of, I don't know,

a dozen or so people. In the event, I got two people, which was disappointing, but it worked

for them and they like it. So the reactions were quite positive, even though there weren't as many

reactions as I'd hoped for. So what I'd like to do is continue to try to expand the user base.

And again, I know that what you discovered, and I apologize for not making it clear at the outset,

is it really is a JQT utility. It's not a standalone utility. But if you wouldn't mind,

Well, actually, yeah, if you wouldn't mind, if I could do another demo at the

user group meeting on Tuesday, and maybe recruit another one or two people,

I would really appreciate it. Yeah, sure.

I could actually show you the live search facility now, if that would be of any interest.

Yeah, sure. Yeah, definitely. I've been out of it for a while.

All right, let me share the screen.

I think the most impressive thing about the live search, just to give you a sense, is Bill Lamb was

impressed by it. And I think when we had shown it to Chris Burke before, he wasn't sure how much

use it would have. But I think Bill has a pretty good sense of how useful it would be.

So here's the notion. I mean, usual problem with searching for J code, and this is a problem Chris

Burke solved up to a point is that normally a full-text search engine discards punctuation.

In other words, it discards J source code, which is the problem. It turns out that SQLite has a

full-text search engine module that you can turn on when you build the binaries, which Chris was

kind enough to do in the latest versions of the binaries that ship with J, the SQLite binaries

that ship with J. So what you can do is you can say, let's see,

slash code slash code, let's say. And initially it's slow, it takes a second or two,

but once you've got one token in, it's almost instantaneous. So slash code tilde, for example,

gives you results immediately. And the results that come up are wiki results, those are in

Teal results from the forums, those are in Rust, and actually also results from GitHub.

And one of the two beta testers, who's a brand new J-programmer, or fairly new J-programmer,

came back and he's, I guess, a financial analyst or some sort of finance guy by profession.

and he was able to find a post from the forum that was useful to him as well as code from GitHub

on interest rate calculations that was of interest to him. So I think there's something to this.

And the other thing I added, I think after the last time you've seen this,

is that if you do happen to be looking at a post from the forums, this button shows up,

up here called show post in thread. If you click that, it teleports you over to the forum browser

section with that post selected, but you can see the original post as well as the entire thread

emanated from it. This turns out to be a huge time sink as it turns out. I was a little surprised by

that, but you- - You mean implementing it was a time sink?

No, I mean that it can, it's rabbit holes that you can follow. It's actually, I mean,

it's good news in a way. It's engaging. It is engaging. It's, it just, it is, no question

about it. There's also a time slider. You can turn off GitHub and slide back in time.

And as you do so, you get steadily more hits, which shouldn't be surprising. If you go back

far enough. It's just everything back to 1998. And that's the major new feature since the last time

I was able to show it to you. >> Great. Wow, that's pretty cool.

>> And actually, Ed, the show post and thread is more than a time sync. It's super valuable. I've

used it twice today because the original poster was a solution. If I hadn't been able to show

post and thread, I wouldn't have known, like, the original question showed up, but the solution

didn't. But by showing post and thread, I could see a whole list of things.

Right, right. Well, that's the idea. I'm pleased that it happened to you, not once, but twice

today. That's great. Yep.

Cool. Yeah, yeah. I'd love for you maybe in the second section after the beginners,

we got it like last time. Sure, of course. Whenever,

or whatever works for you is fine.

OK, that sounds great.

I will schedule you.

Thank you.

There was also a comment on the YouTube site

by somebody talking about switching

the shrink and the expand browser window buttons.

Did you see that Ed?

I missed that.

Well, no.

What was the gist?

They basically said having it the way we had it,

I think it's expand is on the right and shrink is on the left.

They said to them it made more sense to reverse those two.

So shrink pushes it back and expand pushes it out.

You know, the reason I positioned them the way they did

is that when I had them the other way,

you would forget quite what would happen.

But you'd shrink or expand the browser.

And then when you moved your mouse down and to the left,

you would inadvertently touch the shrunken thing,

whatever it was, and it would expand again.

Gotcha.

It was one of those things where you--

Yeah.

Yeah, it wasn't casual.

The placement was deliberate.

I'll go back and look at the comment, though,

and I can respond to it.

Yeah.

Actually, I did respond to it.

All I said was, thanks, and are you

interested in becoming a beta tester.

Thank you very much.

But I guess they didn't go for that.

Not so far, anyway.

No.

The other one that I was thinking about today

after Bill's comment about--

and your comment about the slider and the date,

I think you nailed it.

I think exactly what was confusing him

was when he went on to the--

I should actually share screen and be able to show stuff.

I'll try this and see what happens.

Okay, and I want to...

Okay, so hopefully you're seeing my...

Yeah, with no results yet.

Okay, so this up here...

- It looks like an editable field.

- It does look like it,

and I'm sure that's what threw him off.

He was probably trying to go in and edit.

- Yeah, I have since fixed that.

- Okay, 'cause what I was gonna suggest is

You can also put ticks underneath here

with the different years.

Can you put labels on the ticks?

I believe you can.

Really?

I think so.

All right.

I think there's a way to do it.

I haven't done it recently, but I'm

pretty sure you can do that.

OK.

Well, that's obviously a good thing to do.

And then the only other thing I was thinking of

is if you put another bar above this that, say,

starts from here and goes as far as this slider,

that might be a way to indicate that you're

looking at this range, not just this singular point.

Right.

But that's about all I came up with.

Yeah, that would probably be better than the field

with greater than or equal to 20 to 21.

These are widgets.

These are Qt widgets.

I don't have the kind of control over their appearance

that I have with the is a graph area.

So I'm not sure I could do the bar trick.

But if you let the screen go, I'll show you what I did do.

Yeah, I can do that.

There you go.

So I don't know if it's obvious.

It's like I'm in dark mode now.

But this doesn't look like an editable field anymore.

And as you adjust the slider, it changes,

but it no longer gives the appearance of something

that you can reach into and change.

So I'm hoping that'll go some of the way

towards reducing the confusion.

And the only other thing that occurred to me

is with your local database and add-on is up to date,

you can change that text, obviously.

if it gets behind it tells you that.

Is there a way to change the color of the button as well?

And I think there is if you use QT Style.

Yeah, there is.

There's a whole style sheet facility.

So you're thinking it should turn orange

or something like that.

Something like that, yeah.

Just to alert you that there's something different there.

Yeah, I like that.

And that might also be useful when you click on it to update

is that it might go back to gray when it's finished updating.

Yeah.

Yeah, OK.

And to me, I did a local database update today,

and it took me a minute and seven seconds.

Yeah, that's about right.

Yeah, that's what I figured.

It's the only reason, the only compelling reason to do frequent updates would be if you want to

keep up with the forum traffic so that the database is updated on the server every day,

but you are probably fine getting an update every week or even every couple of weeks,

unless there's recent forum traffic that you want to be able to examine or do searches against.

or if you happen to know that changes have been made in something in GitHub that you care about,

or to the wiki that you care about. But most of what you'd be searching for, I think,

would not be the very freshest stuff. So updating every week or two is probably fine.

That would be my guidance anyway. >> And that actually might be an

argument not to change colors then, because you don't want to draw too much attention to it.

>> It's entirely possible, yeah.

I mean, if you've got gigabit broadband, obviously, it's a non-issue.

You can update every few minutes if you want to.

>> Now, if you update it every few minutes, how often is the database changing?

>> I was joking.

No, it's only changing every 24 hours.

>> Yeah, okay.

>> No point unless you are feeling particularly paranoid about your updates.

- Well, and if you were, it wouldn't be changing.

- Right.

It's pointless.

- It would be a trap.

And so I guess aside from the suggestion I had about the New York City J-user group

to promote it, we've also got the podcast coming up on Wednesday, I think we're going

record next week. I can promote it at that point too, if you want.

That's a fine idea. And I appreciate that very much. You need to have a link in the

show or my email address in the show notes. Yep. And with your permission, I'd also give

your email address, audio as well. Is that okay? Oh, yeah, sure. Okay.

Absolutely. Nobody's gonna get it. I mean, they won't spell it right.

It's in the show notes. That's the important thing.

Yeah, no, I agree. But I do, the other thing I tend to do with the show notes is I tend to do the

capital AT for at and the dot dot. So it's not easily spammable.

Right, right, right, right, right.

But I think most people get out of that.

Tario, but it's not as bad as Tario, but Gotsman is bad.

Well, those who can spell Tario don't usually spell it with two Rs.

So, the same issue. Yeah. Yeah. Yeah. The two Rs is a rare one.

Yeah. Yeah. Gotsman is actually gottasman. There are no, very, very, very few gottsmans,

and I'm related to all of them as far as I know in the United States. It's gottasman,

the actual spelling of an E. Well, when I was in Greece, I realized that my last name starts

with three consonants, which is usually not a problem. People used to make names, but it looks

weird. Did you get reactions, feedback? No, it was just someone who didn't understand what I

was saying and had trouble spelling it. Oh, I see. My father was a classical

philologist by training, although he made his money in computers. And he finally, towards the

end of his life, made it to Greece and spent, he retraced the journey of Odysseus through the

islands and so on. I asked him about it afterwards, "What do you think?" And he said, "Whoa,

the Greeks really effed up the language," he said. He had ancient Greek and he thought modern Greek

was crap by comparison. Yeah, well I only studied ancient Greek myself, so I don't really know how

to speak it other than a poem I memorized. Anything more on the JWiki browser or the

thing as we refer to it? The only question I have is whether anyone has thoughts about how to do

searches and limit them to categories. That was one of the suggestions that came back from one of

the one of the two beta testers. So I think it was Bill, I can't pronounce his last name, S-U-C-H,

who said it would be cool if I could do a search and just specify that I wanted to see hits in

J phrases, for example, and nowhere else in the wiki. So basically to be able to use, Bob,

your category hierarchy as a filter on the search. Maybe I only want to see essays, maybe I only want

to see interfaces, whatever. I'm just not sure how to, technically it's easy to do, it's not a

problem, but I'm not sure how to present it from a user experience perspective. So throw that out.

Sorry. It sounds like a drop down, but I don't know how it fits in with what else.

Well, the problem is there's a couple of hundred categories

that we'd have to care about.

So it's not, I think that's right.

There are at least a hundred.

So it's not obvious you could use a dropdown,

but that was my first instinct as well.

It was, oh, that's no problem.

We'll just give them a list.

But I don't know that that's necessarily

the right way to do it.

Maybe we have a limited set of categories.

Some categories it doesn't maybe make sense

to be able to filter on.

So we just manually make a decision.

And it's a much shorter list, I don't know.

- Yeah, maybe just high level categories like essay.

- Maybe high level categories, yeah.

- That's exactly what I was gonna say.

Like just limited to the ones that we think

are the obvious like phrases or a few others.

And it bumps up against the challenge

I was saying previously about my categories are ad hoc

and they're useful for structure,

But they may not be the right categories.

And a subset of them may be much more useful.

Yeah, I would think the basic one

would be the source, whether it's

from the forum or different parts of the wiki.

Yeah.

All right, let me let that simmer.

That's a good way to think about it.

Thank you.

One of the categories I haven't actually put in is guides.

And it's actually a folder in the wiki.

And it's tremendously powerful.

So that might be a category worth adding,

because it's got so much in it.

Well, I'll show you.

Because it really is--

That rings a bell.

You say it's not in there now?

It's not in as a category.

OK.

Oh, by the way, I just tried to look at the code

version of stuff and I couldn't sign in is it supposed to be my regular J login

it should be the same okay I probably just lost my password or something

there's a change when I change my password

we you actually are looking like when you're looking through the viewer at the

browser you're actually looking at the browser of the wiki so it should be

exactly the same. Okay I probably just mistyped it or Google stored the wrong

result. I mean my browser stored the wrong result. I haven't spent a lot of time

doing that. The other option is here on the upper button here you've got a

browser button that takes you out to the browser itself. So if you're on a page

well let me see I'm gonna just do guides and see what comes up. Broken wiki page

Guides, Guides, New Page Guides.

Now I probably want to go into here,

Guides Window Driver, there we go.

So if I go back to Guides,

there's all these different things.

Well, that's interesting. I get this out of the way.

There we go. So I've got Guides.

These are all the things that sit under the folder Guides.

So there's a tremendous amount of,

now I split it up because obviously

when you get down to J602, guides to that aren't useful.

But there are areas where it is really useful.

Like if you go to the startup,

tells you the whole startup sequence to everything.

- Right.

- So it is a useful thing.

See if I remember how to do this.

There we go.

It is a useful thing with so much information.

It might be an area that would be worth actually creating

as one of these categories.

Just because it sits there already,

it would be pretty easy to make that folder a category.

I hadn't chosen to do that in the past

'cause I was sort of reordering things

and splitting this stuff into different areas.

So I've got stuff for frameworks and user interfaces

and general and technologies, I split those up.

But we could put it back together

if that's a useful way to have the live search

look through things.

I think I just lost the thread, Bob.

So--

Well, what I'm saying is--

Frameworks is already a category.

Technologies is a category.

I know facts is a category.

Yeah.

I think-- I know window driver is not a category.

No.

General is a category.

What you're saying is--

I don't think general is a category.

No, isn't it?

OK.

I don't think so.

No, I think I split all these guys up.

OK.

But the things you see in technologies--

well, the things you see in technologies

here may not show up in all the technology areas.

It's going to show somewhere up in my breakdown,

but it might not show up in technology.

So there's technology there.

And all I've got is those things there for technology.

I don't have, now I do have,

I did find that was a good place to put Fourier transform.

But who knows why?

But the point is, is if guides were part of a dropdown,

you're immediately looking at all these areas

without having to go to all the different ways

that it could be broken apart.

- Right, but I mean, what I'll need to do,

or one of us will, or both of us,

is look at all of the major categories.

I mean, there are more major categories

than show up in the guides page, right?

- Yes.

- There are more good candidates for search filtering

than show up in the guides page.

- Yeah, there's some obvious,

like if I was gonna do a search, I would put in essays.

- For sure, yeah.

- NUVOC for sure.

And maybe guides.

And then phrases, of course.

- Phrases, sure.

- And between those, I think you'd have a lot of,

and then you could add things as people said,

well, I really wanted to look in this area.

- Yeah.

- Oh yeah, that brings up a point,

is does the search tool

have some kind of a feedback mechanism?

So like someone could say--

- Where you can leave comments?

- Yeah, something like that.

- No, in fact, the whole tool completely

lacks a feedback mechanism.

What a very good point.

- 'Cause I was thinking if you say,

oh gee, I wanna look stuff up by category,

but you don't have my favorite category

or something like that.

- Right.

Or I wish that the shrink browser

and expand browser buttons were reversed.

- Right.

- Mm-hmm.

- Yeah, that's a really good point.

All right, I'll add that to the list.

- So I'm gonna shrink this down.

- And that could actually lead you to an FAQ on the tool.

- God, I hope it never gets that complicated,

but yeah, I suppose it might.

- Yeah, I see the effect you're talking about.

If you reverse those, like spanning the browser,

if you made this shrink as soon as you come across here,

you go to there, it's going to expand.

I think so, yeah.

Yeah, yeah.

It would be more of a problem if I,

if you put the shrink on this side, I drag down there,

and then it would expand, right?

Yeah.

Yeah.

You'd have to be careful about your mouse movement

after you shrink the browser,

if the buttons were reversed.

It's not impossible, but it would be irritating, I think.

I think.

Yep.

Yep.

And I mean, to be fair, you've got an excellent feedback

mechanism for bugs, which is your debug log thing up here.

Well, yeah.

That's a little different.

It's a different thing.

Devon's point is not bugs.

Devon's point is enhancements.

Yeah.

But it could be bugs too.

It's like if someone--

Actually, that's true.

Actually, that's true.

That would allow you to link what's in the log

to a specific--

Yeah, that's a good point.

Yeah, maybe I do need a page on-- and this actually

came up from one of the two beta testers.

I think the new J programmer mentioned

some kind of overview.

And Bob, maybe the answer is I finally need to buckle down

and write--

Into a wiki page.

A wiki page.

And then I just give you--

the wiki page is just one of the--

it's the page that comes up by default

or whatever when you launch.

Yeah.

All right.

Yeah, OK.

Good.

Good, good, good.

And yeah, that was all I had.

So did you want to talk about the primer?

Yeah, because I finally did it.

Excellent.

Yeah, because that's actually what I was looking for.

I saw you were going to discuss it.

I thought I should take a look.

Where are we?

Here we go.

So let's go.

So this is my revamp of the Primer.

This first page looks almost the same.

The differences you'll see--

one is instead of having a more complicated navigation,

I've simplified it quite a bit.

And I've added at the bottom a way

to move around different pages.

So you can jump around the Primer if you want to.

Now, that's not encouraged because there's

the number of points at which the primer builds on previous--

it works gradually through the lessons

to build something that's more useful towards the end.

But you can do it.

And the reason I think it's important that you do it

is there are times when people don't

want to have to come back to this first title page.

They want to be able to blast right ahead to wherever

they are and not go page by page through it.

And the advantage of that is I can just click on any page

here, and it's going to take me to that page.

So this is a discussion of what verbs are.

So you know where you're going.

When you hover, it's going to give you the title of the page.

So you can tell right away what the title of the different thing

you're looking at is, which is useful if you know where you were

and what you want to do.

And the checkpoints, that's included as well.

So you can click on that, and it takes you

to the different checkpoints.

The other improvement I made was I changed the CSS

to highlight these different code aspects

and other things that show up in some of the examples.

So they're really clear.

For whatever reason, the previous way of doing it

made them slightly smaller, but bold,

and they really didn't stick out that well.

But this fits.

And also if I go back to something like here,

you can see the styling on these fit what you're seeing in

and what looks like text.

So that there's a correspondence to what you're looking

at here to what you're seeing up in your text here.

- Yeah, it's good as an indication

that the stuff in the box is something in J.

- Yeah, yeah.

And that's what I was having consistently doing with it.

Again, you can move your way through.

And if you don't wanna go through things quickly,

you just put them up on the top

because these won't change position.

Of course, the bottom ones change position

depending on how much information you've got.

And it was all pretty straightforward

until I got up to here.

And when I got to here,

the graphical user interface they used to have

used the whole JForm editor.

So it used an entirely different way

of doing your base forms.

This has changed completely with JQT.

It's now based on a bin version,

which means that if you expand your form,

it'll actually float with the different positions.

You don't have to specify your starting positions.

All you're doing is specifying your width and your height.

And then if you change the form,

everything stays relatively the same position.

So it's much more powerful,

and it's actually a quicker way to establish your form,

but it's different than what we were previously doing,

completely different.

And it referred to the form editor, which no longer exists.

That was from something from J602.

So that's how far out of date it was,

which was one of my main drives for doing this.

Where this got really tricky,

well, part of it that got kind of tricky

was explaining some of the changes with the bins

and the actual change to the language for WD.

WD didn't used to use PMOVs,

used to use the thing called PAS,

and you'd establish a border

around whatever you were putting.

But now what you do is you put in PMOV,

you can do the X and Y coordinates

and then the width and the height.

And by doing that, you're actually specifying

exactly where you want your form to show up.

So it's more powerful, but it's different.

So that was one of the areas I needed to change.

I wasn't aware of reset, but I left it in there.

Reset will kill all the existing forms,

which is really useful

unless you want some forms to be persistent.

And if you want some forms to be persistent,

it will kill all the forms.

So they'll vanish.

And in the case of some of the things I've put together,

they rely on being permanent.

So if you use WD reset,

you're basically gonna have to go and reload the whole thing

because you've basically slammed it shut

without remembering where it was.

- Does it terminate the JQT windows?

- No. - No.

- Okay.

- It's handy. - Good.

- 'Cause I've only, I never gotten very far with this stuff.

So it's handy when you're learning it

'cause you just say, okay, I messed it up,

just reset and start over.

- And that's exactly why I left it in there.

Yeah.

'Cause that's how Eric uses it.

He just says, if you have problems,

just reset and then start again.

And he's exactly right.

It's a good way to clear everything up.

But where I got into problems today was in here,

because they haven't completely changed

their file structure,

but they've changed the way you access the file structure.

So what this previously used to be

is just FN equals file slash text.txt.

And that was enough to automatically put it

in the user file.

And that no longer works.

So now what you have to do is you have to put

the tilde user, which identifies it as the user folder,

and then you have to put J path in front of it.

and then that will build out the rest of the path

and then it works.

But that ripples all the way through this data processing

because every time you turn around,

saying, well, why you should create this file,

you should create that file.

Well, each time you do it,

and in fact, it gets kind of complicated

because they're asking you to create text files,

which are actually pretty hard to do.

You can't really do it from the JQT interface

because it wants to create IJS files.

And so you have to override that to create a text file.

And then if you wanna get access to it,

you have to override the fact that it's a text file,

not an IJS file.

And you can do that through your interface,

but it's, you know, I'm sure it's different from Windows

than it is for Mac.

So, those were some of the challenges I faced

with this particular area.

I think, as I was reflecting on it today,

I think I've got it to the point where

it looks like it's really robust and everything works

the way you would expect.

The one-- oh, it's not in this section.

It's the next section.

The one area where it was interesting--

sorry, is it in this one?

Oh, yeah.

In this one, they talked about bringing nub count

in from miscellaneous files.

Nub count hasn't been defined since 2007.

So I had to go looking for it in old versions of J.

And in fact, I used the viewer to be

able to go back and figure out when it had actually

been defined.

But it wasn't a miscellaneous folder.

But that miscellaneous folder doesn't

exist in the same place.

And now where it exists doesn't have nub count in it.

So I did go back and find it.

And this is what it is.

So I just defined it and put it in so that the whole thing

still works.

But that was one of my kind of kludges

to keep this thing working.

And then the next area--

This is potentially an insulting question,

for which I apologize.

Are you testing this stuff as you do it?

Yes.

OK, cool.

Yeah, that's how I know that it's not working.

Oh, OK.

Yeah.

Well, I remember the very first programming manual I ever read was O. Pascal.

And O. Pascal was, I don't know if it was the first, but it was one of the early ones where the programming examples were typeset into,

came from the compiler into the typesetter.

So it was guaranteed that whatever

you saw in the book was actually working the way it

was supposed to work.

I was always very impressed by that.

Sorry, just a thought.

No, no, it's a good point.

How I've been doing it is I'm taking what is in here,

I'm loading it into J9.4, and then I'm running it in J9.4

and making sure that I can get back out the same stuff.

In the next area--

or is it in this one?

I'm just thinking.

I think it's in frequency.

Nope, frequency would work.

In the next area, this is where I really ran into problems.

And the reason I ran into problems here,

again, you've got this whole different way

of defining your form.

These things are pretty much the same.

But here, this used to be something

called mbopen one word.

And now it's mbspaceopen.

This p defined this way still works.

But mbspaceopen returns with a line feed

appended to the file name.

And so if you turn around and put this in,

it's going to say, oh, yeah, if zero is not equal to this,

so I'll go ahead.

But then when it goes to load up the file name,

it won't load up the right file name

because it's got a line feed at the end of it now.

So I've had to pop that in to strip it off,

and then everything works again.

But those are the kind of little kludges that are in there.

Yeah, I noticed too up there in your top definition, you're not indenting the bins

like you were in the other definition. Good point. I forgot to do that, but yes,

it's a handy cue to how stuff is laid out. Absolutely. And I'll go back and do that now,

because you're absolutely right. That's exactly why I did it. So that these Hs got moved,

the Hs in this term, the S as well, because it's all part of the same space,

gets indented, and then the Zed brings it back out again.

And then...

What is bin S?

Aha! I had to go explain that in here. Okay, well, bin S, I actually did explain it. The

only new parts are bin S, which provides a spacer in the horizontal bin.

It'll also do it in vertical bins, but I didn't want to make it too complicated.

Right.

But basically what it does is it allows you to space things. So, and the other thing I have to

to do with these two pages is have to go in

and capture pictures of these actual forms

because I took out the old pictures

and I'll put in new ones.

So people at least know what they're targeting.

- It's handy to have the picture,

in this case, of something right next to what it's doing.

- Yeah.

- So you can just look back and forth.

- Yeah, and I think in fact,

I think the old way of doing it

was to actually put it right in here.

So you saw the file and then you saw what was here,

but I might drop it down to here.

Yeah, it's hard to say

because I'm explaining these parts of it as I go.

- If you do it as a-

- Might do it right here after you've run it.

- Table on the wiki,

you can do text picture next to each other.

- That's true.

Yeah.

- I mean, some of these don't really have pictures

like the close buttons and stuff.

- Yeah.

Well, and they're referring back to this.

That's why I didn't want to get this explanation

too far away from here,

but it might make sense to put it right here

because this is where you would actually end up seeing it.

'Cause when you actually run this, it would show up here.

- Yeah, that's good.

That's smart logic. - And then the press

the file button and those things make more sense

because you would see them in here.

- Yeah, that's true.

- And that was pretty much the areas,

But what I found interesting was,

and it sort of reflects back on something Ed's been saying

for the last while, that the J community seems to be

so focused on math and maybe more abstract thought.

It wasn't until I got into this

where I'm actually trying to interact with the user

and the areas that the user would be interacting with

where things suddenly got super complicated.

And I think if you want to make a language effective,

this is not the area you want to make it super complicated.

Yeah.

You probably want to make it a little easier.

I'm not sure I agree with you on that.

So specifying a GUI is just tricky.

I've done it in lots of different environments

over the years.

And this is not bad.

I mean, the vertical and the horizontal buckets, bins,

are, that goes back to Microsoft's WPF years ago.

They came up with that,

where they first popularized that mechanism.

And it's a very powerful,

very convenient, I would argue,

mechanism for putting a GUI together rapidly.

I think that J is no worse with respect

to specifying user interfaces than any other environment you

could name.

So there are criticisms you can offer of J

and of how J is presented.

But I think the GUI stuff is pretty good.

I thought this part of it was--

this part I don't have a problem with at all.

In fact, I didn't show how economical it can be.

But you can do bin vh, and then you

can do bin sz to further narrow this down.

Yeah, I think you made a good decision in not going there.

Yeah, yeah.

But that's an area that I could have changed.

When it comes down to here, though, that's

where I'm saying, is this is kind

of the interaction with the whole file system,

and it's just messy.

Like I'm not sure why it needs to be.

There's two ways I can go.

I can either try and figure out a way

to actually make things that would make it clearer,

or I can take a look at this and say,

well, it just requires more explanation.

And there have to be, if you're into this stuff,

there's gonna have to be sections devoted to saying,

under a Mac environment,

this is how you do it in a Windows environment.

This is how you interact with things.

And these are the challenges you're gonna face.

What does Jay have, if anything, for doing browser-based forms,

where you just have to do normal HTML?

Well, within JQT, you can do web viewers,

which essentially you can create a page that's just a web page.

In fact, essentially, that's really what I think Ed's doing with his JWiki viewer.

because that whole web...

I'm not sure that's Devon's question.

Yeah, because it occurs to me, I don't know if you're familiar with R's Shiny interface.

It lets people put together fairly complex things with R underneath

and in a nice browser-based format.

That sounds to me closer to...

You said browser. Go ahead.

I was going to say that sounds closer to me to JHS, which is all browser-based.

Hmm, maybe. Yeah, I don't really, I'm not familiar with them enough to say.

Devin, is it actually a web page or is it just sort of the style of HTML, HTML-esque?

Yeah, you know, I don't know now because it's been a while since I looked at it. I thought it

was the web page, but maybe it's just the style. Yeah. Because it does have RL behind it.

If we, if somebody could figure out how to gracefully, I mean, you can sort of, you can

conclude sort of from what I understand.

But if somebody could figure out how to gracefully let me use

J as if it were JavaScript behind a web page,

I would be overjoyed.

Let me see.

I'll have to restart this.

Yeah, that's something I periodically wanted myself.

Oh, OK.

So you guys see this now?

Yeah, what's going on?

Sorry.

No, you're not seeing what I'm seeing right now

'cause it's opened a new page.

But let me just go, I'm gonna go back, close this.

And I'll refresh this.

Oh, you silly thing, I hate you.

There we go.

Okay, so now you see all this noise

because now I've gone into a session and restarted it.

But this is JHS.

And it's actually-- it's running off a local web page.

And you can do whatever you want with J in it.

Oops, what have I got here?

This is a transcript, though, in effect, right?

This isn't a form that I could define.

Well, you can't-- I mean, there's

examples of things you can do with the demos.

I think it's an overview.

No, somewhere in here there's demos.

It's here.

- You saw it there, in tools it was there.

- In tools?

There's demo, okay.

So for instance, these are demos where

Let's see if I just take that.

Oh, I have to do run demo four, right?

Okay.

Run demo.

And there's my demo.

- My, my, my, look at that.

And so that's essentially a web page.

- CSS is probably not an option if I had to,

oh no, it says CSS.

- Yeah, it does CSS.

Yeah, it's doing that by CSS, I think.

And if I click here,

I can actually see the script that does it.

And so these are Eric's shorthand

for essentially JavaScript.

So jHBR just creates a horizontal line.

And then if you want a radio button,

you can name the button with your X.

And then with what you put here, you

can define the group, whether it's on or off,

and those kind of things.

You create it when you run it.

When you go to get the page is when you start creating.

There's your CSS.

So right now, it's got color green.

is at span, that's how it would set up.

But then as you go in, there should be a page where--

I'm trying to think.

See where he does his color changes.

I don't know if he's agree with the way he's done things,

but you can control these different things.

Up here is all the menus.

So the actual-- this is actually defining the different menus.

So if we go back, and I can go back to the demo, I think.

Here.

And you can see you actually do have drop down menus.

Complete with shortcuts.

And then what he's doing here is you,

the JavaScript here is showing what's being executed

and then EV move click would then trigger a J verb

that then does something.

So that's kind of how the whole thing works.

- So where is the J engine running?

- The J engine is running.

- Is it local or is it on a server?

- No, it's local.

It's running on your computer.

It's basically running off of the console.

It's got an instance of the console that's running

and it's just feeding stuff back to the console.

Console's replying with answers.

- So this is not in fact a general purpose way

of delivering web applications

because I've got to have J installed on my machine

for it to work.

- Well, unless you put the whole console

like with a DLL or something in with the whole thing.

- You can't ship DLLs with a webpage.

>> Right.

>> Well, your other option, well,

the other option of course that we've come up with is the Playground,

right? Where you can effectively go to the-

>> Yeah.

>> Yeah.

>> Right. Well, I mean, it feels like we've got all the components that would be

necessary to turn J into a JavaScript replacement.

I just don't think we're quite there yet.

>> Well, and then the other area that I saw,

Eric had made a change to the wiki today. He hasn't announced this. We announced it back in

July, but he's now put together all the process that you have to go through to put

Jay up on AWS and have a remote browser. And then you've got a server. Yeah, but he's actually

filled it out on the wiki page for JHS now. So he's got all the things you need to do,

what it costs to and the different process. But with that, you can specify by the amount

you're willing to pay how big a machine you want to run your J. And then once you're running that,

you've got access to it just through the browser. I was doing some work on Google Cloud Platform,

I don't know, a couple of years ago, I guess. And you can really chew through your credit card

quickly because you say to yourself, "Oh, I can either think harder about this problem or I can

throw money at it. I think I'll try throwing money at it first and see what happens." And

it's just a horrible, horrible situation. I think this is what he just, yeah,

this is what he just added, "Install JHS server in the cloud." So he's put all this information.

Oh, good. Yeah.

I just did some cloud stuff for the first time last year

at the APL conference.

It's pretty easy to do with Dialog.

So anyway, that's my overview of the primer,

depending on how you pronounce it.

And I had a question for you, Devin,

whether you think that's appropriate for me

to cover in the--

maybe the beginners regatta?

Oh, yeah.

Yeah, I think that would be exactly what it's for.

Yeah.

And I could just do an overview of the navigation

and say this is the way you go through it.

And now it's up to date.

So it works with the current version of JQT and also 9.4.

And it'll work in any of the 900 series.

I included anything that the 900 series, I think it was 902 actually.

There's no direct definition yet, the double curly braces.

But I didn't want to throw too many things in because, you know.

>> Yeah. That's more.

>> That's a lot of retrofitting. >> Yeah.

>> It's not just the advanced. I've actually started using it.

I didn't know about it until quite recently. I missed the announcement.

I just, I wasn't paying attention to J when it came out.

And I was actually initially, I had reservations about it because it's the idea of implicitly

figuring out whether it's a dyadic or a monadic verb, for example, based on whether x and y are

mentioned, struck me as a little loosey-goosey. But I'm quite used to it now. I'm very happy with

it. But it would be a lot of work to go back and retrofit all the primer documentation to use it.

Yeah, and at one point I might do that just because I think it's a better way to expose

somebody to rather than that three colon stuff. Three colon zero. Oh yeah, no, I'm used to it,

but that took a long time. Yeah, yeah. No, I agree with you.

And the other thing is the curly braces, the double curly braces is actually more powerful

Because you can force things to be nouns just by adding adverbs or conjunctions.

You can do so much more with it.

I finally realized that. Yeah. No, it's a better general purpose implementation of

definition of stuff. I certainly agree with that.

And I don't know if Dialog had it at first, but it looks a lot like that.

Yeah. I just know Adam Brudzwewsky losing his mind over the fact that we put

double curly, double curly clothes. So that's just, oh, I get rid of that.

He just thought that was awful. I mean, he said it's functional, but just what an awful way to do

it. Whereas I kind of like it. I think it works. But, you know, I kind of like it. It makes it

stand out. So you can notice that something different. Yeah. And you're not going to

mistake it for anything else. Yeah. So, so Bob, were you saying that you would want to do the

primer at the upcoming NYC JUG? I could do that if you wish. If you have spot for it, I can do it.

And that'd be great. Um, what, maybe five minutes. Is that what you're saying? Sure. Okay. That's

five or 10. Yeah. Cause I have a beginner's regatta thing I've been working on that I'm

thinking it might be too much. It's not really a beginner's thing. So the primer is definitely

beginners. I can spend probably a couple of minutes just talking about the way I've changed

the navigation. And then maybe a couple more minutes talking about the different areas that

have really changed drastically. And just introducing and showing people what's there is

the main thing, really. Yeah. Yeah. Because if you're trying to reach beginners, they don't

really care what it used to be, if you think about it. Well, and that's why I think this is an

important point because I'm now more comfortable telling people if they want to learn about J,

go look at the primer because it's up to date and it's not going to steer you wrong.

It actually, the thing I'm very impressed with, initially I was very impressed with,

it gets you all the way to developing a GUI project, which is pretty advanced for taking

somebody from square one all the way to that. And I think that's a good way. It also covers

of stuff like plot and stuff, which a lot of the different areas don't, without having

to go through more extensive labs.

Yeah.

Okay.

Okay.

That pretty much wraps up our hour, unless anybody wants to just add anything in at the

end?

No?

I'm good.

Great.

In that case, we'll see you both on Tuesday.

And thanks for stopping by, Art.

Take care, Art.

Thank you all.

Okay.

Have a good one.

Everything's going well with you

Good stuff. Okay. Well, bye for now. Yeah. Bye. Bye. Goodbye

Bye.

[ Silence ]