Wiki/Report of Meeting 2023-05-11

From J Wiki
Jump to navigation Jump to search

Report of Meeting 2023-05-11

Present: Ed Gottsman, Dave Lambert , Raul Miller, and Bob Therriault

Full transcripts of this meeting are now available on the its wiki page. https://code.jsoftware.com/wiki/Wiki/Report_of_Meeting_2023-05-11

  1. The began with Raul sharing an animation of a rotating F that he ran through the J Playground. This was in response to Ed asking about ways that the J wiki viewer might by converted to a browser based environment. Raul explained that there was three lines of J in the script, about 2/3 of the code was shader instructions and 1/3 was JavaScript. (Correction by Raul: I think I did say three lines for rotatingF, but it's only 2 lines of J
    2!:0 {{)n
    }}

    Ed said he is not a big fan of JavaScript but was more comfortable with the shaders. For more details it would be best to reference the transcript. Bob raised the point that JHS might be an option as well. Raul pointed out that JHS requires J to be downloaded and the J Playground is browser based. Both use JavaScript syntax to interact with the DOM.
  2. Raul then explained that this video involved ray marching as a more efficient way to create the animation. Again, details can be found in the transcript. Raul provided the link to https://www.shadertoy.com/ where there are many examples of ray marching. (Note by Raul: Ray marching isn't actually all that efficient for the general case -- it places a fairly heavy load on the GPU. But it shines where you have an otherwise unused GPU and don't want much load on the CPU. (And especially where there's something at shadertoy.com which is close to what you want...))
    Raul mentioned that we might require more documentation about how the J Playground interacts with the DOM as Ed tries to implement the J Wiki Visualization Tool in the browser. Bob said that he would contact Joe Bogner to find out how available he might be to help out. Ed would be copied as well.
  3. Bob was unable to meet with Stephen yet, but was planning to go over the interface with him next week. Ed said that he was getting good feedback from the Aaron Ash of the NYCJUG meeting and was still looking forward to include more people in the test. Ed wondered what the best way to distribute was and it was suggested that Chris Burke be contacted to see whether this would be the best strategy. Bob said that he would and copy Ed on that as well.
  4. Bob talked to Eric about updating the Primer https://code.jsoftware.com/wiki/Category:Primer_R.6.3 and got a positive response. The titles of the pages have been updated so that the pages are presented in the correct order. Bob felt that he might look at incorporating some of the advantages of the wiki such as hyper links to provide a richer experience for newcomers. The structure of the Primer might be focussed on transitioning beginners to more advanced applications. The Primer currently shows Plot and developing GUI's (which is out of date). There may be more examples added that might encourage application development. Ed suggested that many current users of J are focussed on Math and he felt that there is more use as a general purpose language for application development. Bob felt that the language has that potential, but might require more instruction and libraries to be able to attract developers.
  5. Bob showed off the work that Henry Rich has been doing with the Share My Screen section https://code.jsoftware.com/wiki/ShareMyScreen which explains Advent of Code solutions and that this is aimed more at the advanced programmer or at least a programmer who is familiar with the language. This type of content is welcomed and would be very useful in providing content to the Advanced (formerly Developers) section of the wiki.
  6. Bob looked for direction on the way that the Primer should be developed. Bob felt that he wanted to make more use of visuals and diagrams in the way that Roger Stokes' "Learning J". https://code.jsoftware.com/wiki/Category:Learning_J_R.6.2 It would take into account the audience and would not be overly cute, but more functional in the way that the diagrams could explain concepts.
  7. Dave wondered whether there might be more primitives to support the general use of J beyond the math primitives. Bob felt that with so many existing primitives that more libraries would be required to provide the resources. Ed wondered whether the size of the J languages was one of the challenges that it faces. Bob felt that the Primer handles this by introducing the primitives in a way that gradually builds from simple to more complex primitive and uses the functionality as a motivator for the increasing complexity.
  8. A short discussion about how J's primitives do not alway suggest the action and so those unfamiliar with the primitives have to learn their uses before they feel comfortable with the language. Dave mentioned the inflections of dots and colons does help. Bob pointed out that this is true, but recognizing that part of the language still has to be learned.


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 May 18th, 2023.

Transcript

Let's see where's-- There we go.

Meeting underway.

So do you want to share a screen roll.

Or you can do it.

I just do the URL in the chat.

OK.

Oh.

That's a playground link.

Mac do it if you want.

Oh, make sure my screen.

I'm looking at it.

Hit run on the upper right hand corner.

Oh, my internet connection is unstable.

I shouldn't start my screen.

Okay.

I should run all lines.

There's a run button in the upper hand corner.

That should do it too.

But run all lines.

That should probably do it.

It was covered in videos, but now I see it.

Okay.

Oh my.

Oh dear.

Oh my, oh dear, does this sound good.

Isn't that interesting.

Alright, but.

.

.

That wasn't what you were planning on doing, obviously.

So what I was thinking, and tell me whether this implies that I can do this, what I was thinking was to be able to create a web page and where normally I might have a script with JavaScript in it, I could somehow execute J.

So J would be my scripting language for my HTML page.

And I'm just sharing the rotating F right now.

So Dave, I believe, I mean, conceptually, this is just, it's just a component that interprets J that in the browser.

So you could, this whole IDE thing is built on top of that.

I haven't tried building web pages with Jay.

I don't know that it's impossible or possible.

I just haven't thought through that side of it.

Right.

That's what I'm having trouble getting my mind around.

And I'm going to look at this code and understand what's going on.

You also want to look at the playground page itself, like a blank playground.

That's really what you're looking at.

You're basically replacing the IDE with your page.

Let's think about it.

Yes.

Yes.

Just click outside of it.

I think it will shut down.

But yeah, this is basically, in this case, this is a bunch of JavaScript using JS delivery mechanism.

There's only a couple lines of J and two or three lines of J in there.

Everything else is JavaScript.

Right.

I do hate JavaScript, I have to say.

What's that.

I do hate JavaScript, I have to say.

I did a lot of TypeScript work with Angular a few years ago.

That was a little better.

But I made a commitment when I retired a few years ago not to code anything except J, ever.

I don't know that I'll be able to live up to that commitment, but I'd like to.

And I really would like to try to deliver.

.

.

I mean, the web is just such an obviously right place to deliver code for most purposes.

>> Yeah.

In this case, probably a third of it is JavaScript.

Three lines of J, maybe two dozen lines of JavaScript, and the rest of it is shaders, is OpenGL shaders.

>> Yeah, right.

>> Because that's what I was trying to do with shaders.

And the reason I was doing it here, rather than J is because WebGL is more standardized than OpenGL.

It's a more specific target, so it's just easier to do.

Interesting.

I didn't know that.

Most of this, but most of this, all the things you're just going through right now, that's all shader language.

It's not JavaScript.

I see.

Oh, yeah.

Yeah, okay.

Uniform vector.

here at the bottom after starting it at where it says end of fragment shader from there on down it's JavaScript again.

So starting at where it says gl.

linkprogram.

End of fragment shader, yeah I got it, gl.

linkprogram p if not gl.

linkprogram.

From there on down it's JavaScript again.

Right, so where is the actual j.

- Up at the top and also at the very, very bottom.

So it's two colon zero up at the very top.

- Oh, I see.

Oh yeah.

- And then a double curly brace and right constancy and down at the bottom, closing for that.

This is all a J string constant, you know, almost like string constant.

- I see.

- And so this whole thing gets passed to the host, which is JavaScript to run.

And which then in turn, and most of this is setting up the WebGL context, you know, and gluing stuff together.

Right.

And all it really is, is three rectangular prisms with a camera spinning around it, and the light as well.

And so since it's the camera, that's what's the, as far as the user's concerned, the rectangles are working, but it's really the other way around.

Right.

And since the camera is attached to the light, that also gives it more of an appearance that the rectangles are rotating.

Right.

Nifty.

Very nifty.

But yeah, you're right.

The way to think about this is how does the IDE work, because the IDE is effectively.

.

.

it is almost what I want to do.

- Well, and if you get a chance, you could take a look at JHS too, because that's another one that, it's slightly different, but it's.

.

.

- Well, the difference between JHS and JPlayground, in JPlayground, you have a WSM on it, so the J executes on the browser.

With JHS, you have to have a server that's gonna serve whatever your audience is, and you have that issue to contend with.

And for personal use or classroom use, JHS is probably superior, but for public consumption, I think the playground approach is superior, but we haven't really documented how to move into the WSM interpreter, the J interpreter that's in WSM.

And for right now, probably inspecting the source for the, you know, ignore my demo here, just clear that out and look at the raw J environment.

That's what you got.

That's right.

You're right, but I When you act with the dog interact with the dumb though you the DOM is a JavaScript Syntax, I mean you're going to be using JavaScript Syntax when you're talking to the DOM so that that's it's like your OS demands is gonna be JavaScript, right.

That's an escape Yeah Cool thank you very much >> Sure.

The other fun thing about this, the reason I put this together is because I wanted to play with ray marching, which is ray marching is kind of like ray tracing.

The way this works is for each pixel, I have a vector.

It points off in some direction.

Pixel is conceptually my camera has a screen.

And what I do is I have a distance function that represents the geometry I'm doing.

And all it does is say, how far from this point to this collection of stuff is it.

And so I run that distance function at the pixel.

And it gives me a distance.

And I go that far in whatever direction I pointed.

And then I run it again.

There's a for loop there, which is really um It's a hundred times.

He was his max max March that actually um It basically it iterates a hundred times for each pixel There's no actual it's not really a for loop because it's it what really happens is it unrolls and actually has a hundred instances of that But the decoder because it's the you know, that's the way the shaders were but after a hundred times You know, I'm only epsilon distance so each each time I was getting closer and closer or I should pass So, either I shoot past and if I shoot past then I can detect I've gone off the edge and I use a background color or I've got to it.

And then at that point I use my lighting calculation at that, you know, I have my source point, I have my destination point, I have a direction, and I use that to figure out what color is supposed to be based off of the angle and, you know, the light.

I have never heard of ray marching.

That's very interesting.

If you go to shadertoy.

com, you'll see a lot of examples of Ray Marsh.

I should put that in the chat too, maybe just so it's easy.

Thank you.

Hey Bob.

Yeah.

We're hijacking your meeting and I'm not going to.

.

.

No, no, this is part of the meeting.

No, because I think it's actually really important that if we have a way, as Raul pointed I hadn't put together the fact that if you're using the Playground, you're basically using each person's browser, so there's no server to provide that you would need for JHS.

So that probably is the way to go with this, I think.

We do any better documentation on tying into the J interpreter, in the Playground-style interpreter, for something other than the IDE.

We don't have that, that's not documentation we've developed.

And that, for something, what Ed's doing, that's kind of where he needs to go.

- Yeah, well, I'll see if I can get in touch with Joe and see what his time's like.

'Cause he's got, I believe, either he or Will, and I think Will's still pretty busy.

I haven't heard from him in the last six months.

But I know Joe's been somewhat available.

Once he got the playground up working to a level where everybody was happy with it.

Of course, he stepped back and he's got a young family and everything.

But he might have some time to look around this if we're thinking of using it in a slightly different way.

I'll get in touch with him.

And I'll copy you as well, Ed, on it.

And we'll see where that goes.

- Bob, you're very kind, thank you.

- I wasn't able to meet with Stephen.

I was hoping to meet with him last night.

His schedule didn't coincide with my schedule, so we've put it off to next week.

So hopefully we'll have something more to report about the visual presentation of the whatever we're going to call it, because as you mentioned at the New York City J users group, you feel we should come up with a different name.

Are there any proposals for the name for this thing.

I don't know what the right name is.

may be that the JWiki visualization tool or something along those lines is exactly right, but I wouldn't mind something that flows off the tongue a little more easily.

I'm not worried about it.

I don't think it's the worst problem that we have by any means.

I did get out of the meeting three more test users, so that was good.

One of whom I've heard from, Aaron who said who had a problem which is fixed and he's very happy he says he wishes the Wikipedia worked this way Which is encouraging The other two I have not yet heard from I sent them the installation instructions Raul I'd like to reiterate my thanks for all your help over the last few weeks.

I hope I've been I've acknowledged that sufficiently and politely emails, but I want to make it clear in person as well And I have nothing to report.

You conveyed that you had conveyed that already, so we're fine.

So what I'm running out of is problems, and that was why I wanted to increase the user group numbers a little bit.

I'm not getting the volume of bug reports that I used to get, and that concerns me.

And maybe, I don't know what the timing should be or how we should think about rolling it out, but it's possible we're getting to the point where it's roll-outable, and I don't know how to think about that.

Well, I think you're right.

I think we are getting pretty close to that.

I think the easiest way to do it is to put it in as an add-on and then let people know it's there.

Because to me that's, I mean everybody who'll be trying it out will be familiar with putting an add-on on and loading something.

And the only difference with this one is it's going to load a database as well into your temp files, but that's really not a big deal.

Yeah, okay, doing it as an add-on sounds like the right answer.

I mean, it already is an add-on.

At GitHub we just haven't made it an official add-on.

It's a personal add-on.

Right, putting it in the catalog, I guess, is what I meant.

And that's, I guess, Chris Burke would be.

.

.

We should definitely get Chris Burke involved, get feedback from him.

That's probably the next step.

Yeah.

Okay.

I'll follow up with Chris and I'll copy you as well, Ed.

Actually, I'll copy you as well, Raul, and Dave.

We'll see what he has to say.

And I should be able to send him some of the code in case he wants to see that too, just in case he's curious about it.

I mean, if he can run it, you can see it.

Yeah.

Yeah.

And you can include a link to the GitHub page.

I can send you that.

Yep.

No, I've got that.

So that's probably the easiest way to do it.

He can take a look and see what he thinks.

But I think that is probably the lowest friction for you to put it into an add-on.

And I think it's certainly the lowest friction for anybody who's using J.

Because it's relatively easy.

They'll see it pop up.

We can publicize it a bit.

they'll see it pop up as a new add-on.

They click on it and go and it'll be hooked into the wiki.

Yeah.

I don't know, I think that's pretty exciting.

Yeah, no, I'm excited too.

So, okay, well, great.

Well, I'll look forward to being CC'd and I'm very curious as to what Chris might say.

I don't have a demo and I don't have any other news, So I think this part of the meeting we can declare victory on.

Okay.

Bob, I think you wanted to discuss, was it the primer.

That was one of the things.

I was talking to Eric and pointed out, actually I went looking for the JHS for how you link into the canvas and found that there was a problem with a file that hadn't come across with the newest version of J because of the 9.

4904 difference.

So I made him aware of that and a couple of other things that I found.

I've got to go through some of the labs because there's a number of things that aren't working.

Just bringing him up to speed on things he's done.

But I also talked to him about the primer and he's busy over the next little while doing something I think with.

.

.

He's trying to put JHS up on the big web, big servers and AWS and stuff like that, so he's involved with trying to do that.

But he also said he was interested in collaborating with doing work on the primer.

So I have gone through and renumbered all the pages in the primer so they appear in the right order in the category now, which is a challenge for that one because of course Those titles have nothing to do with the order.

And now the next step is to go in and make it a bit more presentable just in terms of the wiki.

And I'm actually thinking of designing it a bit more like it was born on the wiki, for lack of a better term, so that I'll use a few more visuals and I'll use more links on it because I'm not looking at--when it was originally written, I think it was written with the idea that it would be literally a written book you could read and follow along with.

But I'm thinking of incorporating it into the wiki as sort of a main learning tool because it goes a surprising amount of depth into J but also covers all the basics.

So that's why it's sort of good with a, I think it's got six checkpoints, so sort of six main sections and by the end of it you're going in and actually developing GUI interfaces and stuff.

Now it's out of date because the GUI interfaces that are described are from J6 or whatever.

But I think they can get updated to JQT or JHS and I think there's a lot of possibility here to enrich this and make it a good way and one of the ways I positioned it with Eric was this is a way to bring people into the language in such a way that they might see potential as developers.

So in other words, you are building a learning curve, but you want to sort of build it like a ski jump where at the end of it people are kind of going, "Oh, I could do that.

" Right.

So that they might have seen a few things that you wouldn't necessarily show to beginners, but you might be able to show.

.

.

And as it is, the primer has a section on plot and things like that, which are really interesting and do need to be covered.

And those aren't the things that would normally be covered if you were just thinking as a beginner's text.

Yeah, I think you're onto something important with the notion that.

.

.

Let me go out of another way.

I made the point in the users group meeting that the culture that's grown up around J seems to be mostly about mathematical programming, for very good reason.

But it really is, and it's always tried to present it.

.

.

I'm sorry, it's always sort of stated that J is a general purpose programming language, but that's not what the culture is all about, as nearly as I can tell.

I've always been struck by its general purposeness, and that doesn't come through in most of the documentation, I think.

So I really like the idea of explicitly saying, "Look, you can build apps with this, and here's how.

" I haven't looked at the primer in years, I think, so I don't know, but if it can deliver that message effectively, I think that's definitely to the good.

I think I would say it's got the bones to do it, but it needs to have sort of different parts put on it to make it really work.

I see.

And maybe it's a matter of emphasis.

Yeah, but I definitely want to take it that direction.

So I think there'll be areas of it that are expanded that should be able to do that.

Then the other thing that came up, and I'm interested in what comments people have about the primer as well, because it's, I've talked to Eric and Eric has sort of come back with, well, you could do this, this and this, and they're quite specific suggestions and they're important, but they're not more of a general look at it.

Whereas I'm kind of interested in people's general takes on what it is and where it's going.

And that's kind of, or what an introductory, like I'm thinking it could be the primer, but I'm also thinking it could be something else.

It just, what would be the best way to bring a person into Jay.

And I think the primer has a lot to say that works that way, but again, I think there are areas that need to be changed to bring in the right way.

and in a culture that isn't early 2000s, which is when I think it was written.

- Yeah.

- The other thing that I thought was really interesting, and I don't know whether anybody's seen it yet, I probably should share my screen again and see if I can find it, was what Henry had done with Share My Screen.

Have you guys seen this.

- I have not.

- It's quite cool.

He's taken, and this is actually something that I think Raul's done as well, and I think it would work really well.

Just looking here, recent changes, I think it'll show up there.

There, share my screen.

He's taken recent advent of codes, and he's building these in with explanations around it that would be sort of aimed at people thinking the problem through in a J way.

And it's not entry level, but if you knew J, it's probably just perfect to sort of slim right down to this is the way to look at it, this is what we can do, and this is how we would do it.

And so it's kind of along the lines of what I'm looking for if I wanted to develop an area for developers or for advanced.

this would be the kind of thing that I think would fit really well with it.

Because it's based on problems that people may have done in other languages, but it also breaks it down to how he looks at the problem and in a few lines can break it down into the solution in terms of J.

>> I like that a lot.

>> Yeah, yeah.

And as I said, he's got a number of them.

I think he's doing, to Advent of Code, as he says, "If you're an edge expert, please add your own pages.

" And so he's basically doing Advent of Code problems, but we can build on that.

And again, it would fit really well in with the advanced area because it's not overly verbose, but if you know Jay, it gives you some new ideas about how to do things and and how to look at a problem.

And some of these, I looked at, I can't remember whether I did tree top house or tree house, but that was about the point where I ditched out this year, but I got sort of tied up with other things.

But yeah, it's just basically a page, page and a half way of approaching the issue.

That's kind of daunting until you break it down.

But you know, I'm sure if you didn't know the language, you would go, "Oh, come on, that's ridiculous.

" But when you break it down.

.

.

That's one's usual reaction to a line of J if you don't know the language.

Yeah.

That has, I learned a term years ago for regular expressions that you can wind up, if you escape characters, you can wind up with what's called leaning toothpick syndrome.

Backslash slash backslash slash.

This reminds me of that.

That was my first visual impression was LTS, leaning toothpick syndrome.

Yeah, and there's been comments on the Discord for APL Farm recently, people are talking about the usual responses people get in Hacker News about J being, or APL being unreadable.

And the feeling is that when people say it's unreasonable, unreadable, it just usually means it's unfamiliar.

That's really what it is.

Like any notation, if you don't know it, it's going to be meaningless to you and you're going to have a hot stove reaction.

That's true in mathematics as well.

Although there were some good points raised about the readability of tacit, where if you don't know the purpose of the code, tacit can be very difficult to decode.

If you know what it's supposed to be doing, and I think Ral's talked about this a number of times, if you can show him what it's doing to the data, he's got a good sense of what can see.

But if you just hand them a line of code, you don't say what it's going to the data, there's an awful lot of work to try and figure out what this could be doing and what the input might be.

Yeah.

But anyway, I thought that was based on our discussions last time about advanced and such.

I thought this was a really good step and I encouraged Eric, or encouraged Henry to do more and he has done more.

He's up to 11 now and I guess he's taking a run through all of them.

So we'll see where that leads off.

But again, that's something that I'm figuring that kind of page is what I'll put in along with some essays definitely into the advanced section as that gets built up.

So other than that, and any thoughts people might have on the primer and directions I wanted to go, right now I'm tossing up in my mind whether I wanted to make it more visual or I want to make it more text driven.

What does making it visual mean.

Probably more diagrams, more.

.

.

I'm thinking along the lines of Stokes, I think it's Learning J, where he's got a lot of diagrams of forks and things like that, how they break down.

There's not very much of that in the existing primer, but I think it's useful to develop.

I don't know how far I want to take it, because at a certain point visuals start to get played playground-ish, and I'm trying to consider who my audience might be.

I don't think it's just beginners.

I don't think it's grade school students.

So I'm kind of going to be a bit more conservative going that way, which is kind of weird because I've gone the other way really with the look of the wiki.

Right.

- You know, with a home page like that isn't exactly, you know, (laughs) the usual view a programmer gets.

And I know Chris has pushed back on that a number of times saying he feels he doesn't need the imagery.

It doesn't need to be in there.

I just kind of wanted to start out with a bit more playful look at it, but it could be text driven, absolutely.

- Losing you.

- Can you hear me now.

We can still see you.

- Yes.

- It might be a problem I am, but I can't hear.

- Okay, you seem to be frozen.

Oh, now you're loose again.

- Oh, we're moving.

and we can hear you.

Anyway, Dave, do you have any thoughts about any of that.

- So I haven't looked at the perimeter for a long time.

I just got a phone call anyway, and I'm just wondering if there are any literal primitives that should be added to the language to make it, I mean, it does, it's definitely mathematically oriented.

Jay.

Internet connection as well.

>> I would think if, I think what makes more sense to me, rather than, I mean whatever primitives Henry sees useful to adding to language.

Jay already has so many primitives that I'm not sure that there's a necessity to start looking for more.

But what I do see a need for are probably libraries and add-ons might be a way to do that.

so that it may be worthwhile to expand.

I mean, as an example, plot, which is actually a very powerful plotting mechanism.

It's essentially a library that you can use.

And we should be talking more about that, but I don't think that means that plot should be made a primitive.

You know, like our aspects of plot should make a primitive.

It'll use primitives, but I think as a library, it's more useful because on top of everything else, is written in J and people can go in and adapt the same verbs for what they may wanna do with it.

And that's what I see the advantage of doing it that way, but I definitely agree that there are aspects of the language that should be promoted so that people know that these things can be done.

And right now they're largely unexplored.

Or were explored a long time ago, I'm finding in the wiki, and for whatever reason people drifted away, and there's still very productive fields out there that haven't been looked at for a while.

Maybe that's one of Jay's primary take-up challenges.

It never really occurred to me.

I've always thought of the sheer number of primitives as a powerful and wonderful thing, it's just a much bigger language than "pick your language".

It's bigger than Python, it's bigger than TypeScript, it's huge.

And maybe that's always going to be the biggest problem that it faces.

For take-up, I mean.

Yeah.

That's a good point.

I think the way the primers approached is good because it sort of builds up to these more powerful things like amend and that adverb and a few other things.

By the time you're in a ways you're doing fairly powerful things with primitives, but it starts out with very simple concepts and doesn't actually touch on rank.

I don't think till it's about a third of the way through.

So you're just dealing with plus minus divides, order of execution, really simple stuff and then gradually it works into, you can build these things.

And the language I've heard recently talked about in discussions has been K as a language that's much, much smaller than J, but can do, has similar power and in some areas more power, but it's done in a way that you're like, they've stripped down those primitives to an absolute minimum, so they're very efficient.

And then And it's how you combine them, what they can do.

So each building block has multiple ways it can be put with something else.

And that's.

.

.

Well, that's K is what I'm talking about.

Because that was something that Stephen Aptur had said when we were talking to him, was that he liked J, but he said, "J is such a big language, it's hard for me to get my head around.

I just have real trouble with it.

" where he says, "where as if I go to K, and it's small enough that I can keep it in my head and I can really make it work for me.

" And he's brilliant.

So for him to say that I thought, yeah, there's something to that, that the size of the language in the case of the way he writes programs is a little bit more difficult than maybe a smaller language that's more intense.

I'm not claiming that people have an easy time writing K either, because I think it's a language that has to be studied closely to be able to master it.

How many roughly primitives does it have.

K has dropped a lot of math out of J.

It's dropped the multidimensional thing, replaced it with a little bit more pointer chasing, and it's kind of built back up to something kind of like a multidimensional array using essentially nested arrays as an approximation for a multidimensional array.

You don't have the need for rectangular arrays because you can build up ragged arrays.

And the.

.

.

I'm sorry.

Oh, go ahead.

I'm sorry.

Oh, go ahead.

It would need to be libraries in K, and some of those libraries haven't been written yet.

So it's kind of a struggle sometimes.

Or I think was it K2 where they were written, and then every subsequent version of K has been a completely different, like, Arthur starts from scratch, so it makes the old versions obsolete.

has remarked that he likes to redo everything every couple of years from scratch.

Yep.

A good way of getting rid of the garbage, but a good way of trying to have the baby with him.

Bathwater.

Yeah.

You definitely start to leave users behind at that point, for sure.

And the advantage he has is that he's developed something that's commercially so successful that people will swim hard to keep up.

Well put.

So I think it was-- I'd heard a quote from Jeanette Lusgarten, who's the CEO of Shakti, saying the only reason companies work with us is because they have to.

It's not because they want to.

We're difficult to work with, but they know they have to work with us.

>> Yeah.

>> Can't hear or anything.

>> And you've locked up again, so I guess it's an intermittent thing, Raul.

Yeah, so anyway, that is a point of J, is that you do have a lot of primitives to cover.

I think the most successful way to do it is just to work off of subsets of the primitives and build it up that way, and the primer does that.

So I think it's got a good approach that way, that you build a person along, and then by the time they're into doing the more complicated things, they've got a good foundational understanding of dyadic and modadic and by that time ranks and things are starting to flow for them.

So they start to see how the pieces fit together.

Right.

But that's about all I have.

I'll look forward to being CC'd and thank you again for taking the initiative.

I appreciate it.

And I guess that's it.

I think so.

We'll see whether Raul comes back in with anything.

Did you have anything else you wanted to touch on, Dave.

He may still be on his phone call.

Yeah.

Yeah.

And it looks like Raul may not be coming back.

So yeah, I guess we'll wrap it up and I'll send out those emails to Chris and Joe and see where we go from there.

And Yeah, so I mean, thanks so much for all the work you've done on this, because that's what's really moved it along, and I think it's going to be a very powerful tool, and I could see that during the J users group that Aaron was definitely interested in getting his hands on that.

So it doesn't surprise me he's already back to you with feedback, because.

.

.

Yeah, Aaron was enthused.

Yeah, that's true.

Cool.

All right, Bob, thanks so much for everything, and I'll email with you and I'll see you next week.

Good stuff, and go on enjoying Dublin.

I will, take care, goodbye.

Humans are capable of knowing a lot of symbols, and I don't see the breath of Jay as being a problem for many people.

I think I used a lot of the language, but maybe I need to go through again and find out what I should be doing differently.

Well, yeah.

In terms of symbols and stuff, I think the one thing that I've heard recently that really resonated is that the symbols don't always indicate what they're going to to do.

So you see a glyph or a digraph and sometimes there's a, you know, if it's a curly bracket you go, "Okay, well that's going to be a take if it's a left and it's going to be a drop if it's a right.

" And then you sort of, you build up those kind of things or transpose with the vertical and the colon.

It kind of makes sense.

But the thing is, until you associate those actions with those particular glyphs, you really, that seems to be the jump.

You need to know what that character does.

It's almost like Chinese, from what I've heard.

You need to know what that ideograph is.

Once you do, you can work with it.

If you don't, you're really at sea.

>> That's true of math.

>> Yeah.

>> Everything you just said goes for algebra, goes for calculus.

That's just the way, that's just the nature of notations.

That's, I don't think that's a, I mean it's a fundamental challenge, I don't think it's one that's faced uniquely by Jay by any means.

Yeah, and then that goes back into the familiarity argument.

It's just that you're not familiar with this particular set of things.

Yeah, yeah, exactly.

And most computer languages, the primitives are shared across the language.

I'm sorry, David, please go ahead.

Well, Ken and all made it fairly mnemonic, as you said, with colons, they're sensible where they can be.

Yeah, but it's still a memorization problem.

I mean, it's still very arbitrary in most cases.

I mean, key, you know, the slashdot, I mean, what.

I don't see the mnemonic there, and I think in most cases there isn't really a mnemonic.

And I think that's okay.

There's no mnemonic in most math.

Well, and unless you go over to Unicode, you're really not going to get the kind of, like, ASCII is not going to give you the kind of variety you need to really do something like that.

But again, I think as David points out the consistency with the colons and the dots, I think that's helpful, but you have to learn that code first.

>> Yeah, yeah.

Jay has a lot of math-specific primitives.

I mean, the primes, the derivatives, I can't list them because I never use them.

The list of general purpose primitives that I would use as a general purpose programmer is quite a bit smaller.

Still large, but quite a bit smaller than the full primitive inventory.

Yeah, and occasionally you get into the zone where you have, if you know the math, like I've seen people do things with the polynomial multiplication and things, that suddenly make things that would be really difficult if you were approaching it as a computer programmer, just fall apart.

But you have to know the math to be able to do that.

Right, right.

But I think that's the strength of the language.

I don't think that's the weakness.

It turns out that the underlying thing can do more than you're even aware of.

Yeah, exactly.

Anyway, I think that's about it.

I think Raul's tried to get on and it's gone off again, so I think I'll wrap it up.

I hope you're going to see Raul again in this session.

No.

All right.

Take care, everybody.

Thanks a lot.

Take care.

Bye for now.

Thanks again.

All right.

Thanks.

Bye.

.