Wiki/Report of Meeting 2024-08-08

From J Wiki
Jump to navigation Jump to search

Report of Meeting 2024-08-08

Present: Ed Gottsman, Raul Miller, Devon McCormick and Bob Therriault

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

1) Bob mentioned that Chris had contacted him with instructions to log in to the wiki. Raul was able to log in and get the log files on their way to Ed to be interpreted.

2) Bob will only be available for two J wiki meetings until November. The next two weeks Bob will be involved with Iverson College, so the next meeting will be August 29th. After that Bob will be going to Italy for 6 weeks.

3) Ed will take the information that Raul has given him and create a bar chart of the most visited pages. Bob says this might be useful when we move on to the new format to evaluate the change in behaviour on user page visits.

A general discussion then began.

4) Ed would like to work on creating conversations in the J community and the most common are the J forums. The forums may be a good place to increase the traffic. Devon pointed out that the forum represents people that are already interested in J and that outreach may be a better approach. The recent NYCJUG had a few people who were already on the APLfarm https://aplwiki.com/wiki/APL_Farm which is a discord channel with a lot of array language enthusiasts. The ArrayCast podcast https://www.arraycast.com/episodes also generates interest in the wider community. Ed thinks that the cross fertilization of the different languages could be an effective way to widen the J community. Raul mentioned that there are also communities on Rosetta Code https://rosettacode.org/wiki/Rosetta_Code and Reddit https://www.reddit.com/r/apljk/. Devon mentioned that he had recently given a talk at a Hacker Conference that was outreach. Devon points out that Array languages are often used in finance and that is not a sharing venue. Ed feels that J is most often used for Math, even though it is promoted as a general purpose programming language.

5) Devon mentioned the post by Hillel Wayne about 'Toolbox languages' https://www.hillelwayne.com/post/toolbox-languages/ and Ed feels that you don't want to get pigeon holed that way if the language is general purpose. Devon thinks that logistics may be an area of growth for the array languages. Bob included a link to a Mark Guzdial article https://computinged.wordpress.com/2024/08/05/all-the-reasons-for-liberal-arts-and-sciences-majors-to-learn-to-program-ais-not-really-that-big-a-deal/ that says that there is a necessity to understand computing even when you are using and LLM for programming.

6) Bob hoped to give a talk at Iverson College about what the most appropriate audience for J might be. Bob felt that the primary grades represent the most opportunity, but it was hard to get into the curriculum. Devon and Ed said that they had been unable to interest their kids. Raul observed that it is difficult to turn J into a Christmas gift.

7) Ed wondered if there is an opportunity in domains that have not yet adopted computing. Finance is an area where the users wanted to incorporate formulas in their work and APL was more accessible to subject matter experts. The upcoming episode of the ArrayCast has Paul Teetor, an R programmer who says that the area of statistics and graphics are the primary domains of R. https://www.arraycast.com/episodes/episode86-paulteetor There was also an article by Ryan Hamilton about how KX had been out-maneuvered by open source alternatives. https://www.timestored.com/b/the-future-of-kdb/

8) Large Language Models (LLMS) may have trouble with array languages because they are terse and the amount of programming that is done is relatively small. Ed thinks that there may be a 'business analyst' role for LLM's to ensure that the result make sense in the real world. Testing is another area that humans may be required to develop appropriate unit tests to ensure that LLM's are working properly. Any language could be used for this purpose. Bob wondered if the array languages are better for probing the models which are big linear algebra problems. Raul thinks that is similar to incorporating ArrayFire into J. Raul says if there is an opportunity in anticipating the next big thing in computing. Perhaps LLM's could be turned on themselves to look at their constructs to make more appropriate naming in their foundational programs. Ed mentioned that star programmers are not helped by LLM's as much as the lesser programmers. J may be a better language for pioneer programmers. J is also a very good prototyping language.

For access to previous meeting reports https://code.jsoftware.com/wiki/Wiki_Development If you would like to participate in the development of the J wiki please contact us on the J forum and we will get you an invitation to the next J wiki meeting held on Thursdays at 23:00 (UTC)

Transcript

So the only thing I really had on my agenda

is I started to look at my schedule,

and I think there's only two more meetings that I'm

going to be at before November.

Because next week, I will be on a plane flying to England.

Are you going to present the wiki work, Bob?

No, I was going to talk about audiences for APL.

So I was going to link it back to the podcast more.

Oh, OK.

That's good.

Yeah, because the podcast seems to have

been very successful judging on people who have been

winning the dialogue contest.

[LAUGHS]

Was that right?

Yeah, yeah.

People who-- that's how they heard about it.

Oh, OK.

I didn't know that.

Well, that's good.

Yeah, the last conference I was at,

a couple of people mentioned that.

Oh, that's excellent.

Well, I didn't get that feedback,

but I know that there's been a lot of-- well,

at different times, there's a lot of feedback about things

that we put on.

The most recent one that we did with Johnny Press,

apparently ruffled feathers in the Q community.

So that was fun.

Oh, good.

And ruffled in a very gentle way.

So everybody was quite intrigued by it.

And apparently, Nick Psarris was telling me

that there's lots of people very interested.

Oh, good.

Yeah, yeah.

But that was going to be what I was going to present.

Anyway, I'm going to be on a plane--

yes, I'm going to be on a plane next week.

And the week after that, I'm going to be in Cambridge.

And then I'm back on the 29th.

And then after that, I'm sort of washing out September,

because I'm going to be editing my brains out.

And then I'm going to be away in Italy

for till the 4th of November.

Oh.

You sure you're retired?

I don't think you're actually retired.

That's my current--

I'm not being--

I'm not being played.

I'm retired.

And in the past year, I've been to Sweden, Denmark, Boston,

Washington, Miami, California, Japan.

I think this goes under the heading of people

unclear on the concept.

No, this is the term it's all about.

All right.

My wife agrees wholeheartedly with you, Devin.

She would have me traveling all over the world

if it was her choice.

Yeah, yeah.

Yeah, I just--

I like where I am.

Do you know where you're going to--

when you're going to be in Venice?

It'll be in-- I think we're four days in Milan,

and I think we'll go to Venice.

So 24th, 28th, probably around 1st of October in Venice.

Oh, OK.

I'll just miss you, because I'll probably be there

the last week of September.

Yeah, we're flying on the 24th of September,

and then we're in Milan, I think, for four days.

Yeah, my wife, it turns out, has a conference in Brussels

that ends about a week before we're due to go to Spain.

So there's no point in going home.

Perfect.

And I figured I would just come out and join her

at the end of the conference.

But she tells me, you've already been to Brussels.

Let's go someplace different.

I'm sure the beer isn't as good in Venice, but I'll make do.

Oh, so you're going to go to Venice and then back to Spain?

Yeah.

Yeah, yeah.

Yeah, anyway, if that changes, I will let you know.

But I don't even know whether I can--

my travel organizer is--

I sleep with her.

And she just tells me where to be, and I'm there.

And things work out well.

So you have a social director as well?

Absolutely.

I do.

Yes.

Yeah, and it works for me, because I don't

want to be doing that stuff.

Again, responsibility and power and no, I don't need that.

Well, this time, I did make sure to book my own hotels,

because when I was in Sweden checking into a hotel,

I realized it wasn't under my name.

And they were very lax about it.

But I know that at least hotels here are not lax about you

having a different credit card.

Sure.

So--

Well, then I just have to keep her with me,

because I think she's booked all the hotels.

That's true.

She booked the stuff for me, and it didn't go on the trip.

So--

Oh.

Oh.

Well, she'd always intended not to go, but--

or she equivocated for a while, but then she booked my stuff.

So--

It happened to me once, and I showed-- she booked for me.

I showed up at the hotel.

I said, yeah, checking in, last name is Gotsman.

Oh, welcome.

And she looked down at the record, looked up to--

looked up at me and said, Commander?

[LAUGHTER]

Yeah, that's Barbara.

That's--

I'm Commander Gotsman, apparently, now,

for that hotel, anyway.

Yeah.

So we have one meeting left, and then there's

a big gap in meetings.

But I guess this is a chance to discuss about where should we

be focusing?

Or maybe it's a time to take a break back and then

go back into it.

I don't know.

Well, I will, between this meeting and the next meeting,

try to produce some kind of bar chart around the log,

try to identify robot accesses and pitch them.

And just chart the human accesses.

So maybe I'll have a picture to show next time.

And maybe there'll be something there that's worth--

a string that's worth pulling on,

or maybe we'll just drop it.

So that'll be my contribution to the next meeting.

OK, well, that sounds good.

That sounds good.

That'll give us something to go from.

At the very least, one of the things I was interested in

is when we actually do swing over

to the new category tree sort of organization,

we could compare what you've got now.

We could do another sample later afterwards

to see if there's a difference.

So what end?

Well, just I'm thinking it should

show that people are using different ways of getting

to different parts of the wiki, because the navigation will

be completely different if they're using the navigation.

Well, that we can certainly determine.

Yeah, yeah, well, I'd be interested in that.

If nobody's using it, then it's brand design.

Yeah, yeah.

[LAUGHTER]

Won't be the first time I've developed something that floats

out there and drifts off into--

Oh, oh, oh, oh.

That is the story of my career.

Absolutely, absolutely.

Although, Gary and Peter--

sorry, go ahead.

I was saying, even if you have it, you make a nice tool,

even if no one else uses it, sometimes if you can use it,

and just to put things out in front of people,

they might think it's expertise and all you're using is a tool.

Still works.

Yeah, yeah.

Yeah, there is that.

There is that.

And certain tree falls in the forest and no one hears it.

Does it make a noise feeling to that?

Although, Jack Handy, the Saturday Night Live resident

philosopher, I remember, asked the provocative question,

if trees scream, would we still cut them down?

And answered, maybe, if they screamed all the time

for no reason.

[LAUGHTER]

Yeah, I always think it might be maybe just because there's

a certain element that would cut things down and scream.

And would we have toilet paper if we

weren't cutting down trees?

Yeah, and then would we scream?

Yeah, no, it's good.

It's good.

Yeah, in terms of things to work on next, Bob, I don't know.

I like the idea of pushing on ways to start conversations.

And a lot of the J community conversation

takes place in the context of the mailing list, which

is fairly low traffic.

I think if the traffic increased by a factor of four or five,

I don't imagine anybody would object to that.

Well, maybe two or three.

I don't imagine anyone would object.

So I think it might be worth thinking about things

we could push into the mailing list that

would speed conversation or investigation.

That's all.

Right, yeah, but the mailing list

is sort of talking to people who are already aware of it.

Well, that is definitely true.

And I'm not talking--

I mean, it would be great to expand the universe of J-aware

people.

And I think that the podcast does a lot to help do that.

But just increasing conversation among J developers, I think,

might also be an interesting goal.

Yeah, well, there was a while ago, I think maybe a year ago,

I was wondering if the mailing list was working because

the traffic had fallen off so much.

Right.

And then there's also--

both Cliff Rider and Henry Rich have

taken other approaches, teaching college classes,

and community college classes specifically.

And that occasionally gets people

that stick around or have some further interest in J

after the class.

Yeah, that's how Marshall Lachbaum got started.

Yeah, yeah, Henry's class.

One of the other things I've noticed, and I think, Raoul,

and yesterday at your JUG meeting,

or on Tuesday on your JUG meeting, Devin,

Doug Manella was on.

And I first became aware of Doug Manella through the APL farm

because there's a J channel on that.

And Raoul's a part of that as well,

as well as several other channels for Raoul

because he's able to converse between all

the different ones.

But--

But he seemed reluctant to speak up.

And he was sending texts as well.

And I brought those up.

He seemed happy to elaborate.

Yeah, he strikes me as somebody who's

very big on protocol when it comes to communication.

That's been something that he's been pressing on for the APL

farm and the Discord is to make sure people

are in the right areas talking about the right things.

And it's always nice to have somebody around there policing.

He seems to be able to balance it fairly well.

But he is somebody--

there's sort of, beyond the forum--

I'm definitely watching the forum for sure.

But there is a whole orbit around the array languages

that is outside that.

And occasionally, the people who are on the APL farm

will go back to the forum.

But that's not their chosen way to communicate most

of the time, I think.

Yeah, I should probably--

No, go ahead.

I'm too much in J. I probably should have spent a little more

time in the APL world as well.

That's interesting.

So if there's a penumbra that we could make the J development

community, whose activities we could make the J development

community more aware of, that might be interesting.

I say that not knowing what's in the penumbra.

Well, there's actually a J channel

within the Discord, which is the APL farm.

Does it get any communication?

Is there stuff happening?

Oh, yeah.

Yeah.

No, and there's--

I think the most recent, I want to say,

sort of the event or the topic that just sort of drifted

through was there's a woman developing TinyAPL, which

I guess is a form of APL that she's putting it onto a--

I think she's putting it into Wasm and is just developing

this.

And she actually popped over to the J area

because she was wondering about the modifier trains.

And she was thinking of incorporating those

and seeing how they were done in J.

So those kind of things happen between different languages.

You know, that could be-- that kind of thing

might be very interesting, might start conversations

within the J, within and across communities.

But I'll bet most of the J community

is unaware that anything like that is happening,

that that discussion is taking place,

that that development effort is underway.

Yep.

No, I'm sure they're not aware of it.

I mean, I know Raoul knows about it

because he floats through there every once in a while

and he's seen the posts.

Aside from that-- and Doug would know about it

because he's been through too.

But they're about the only people

I recognize off the forum.

You don't see Henry there.

Or I'm trying to think of who else I might see out of that.

Elijah Storm's there.

Oh, yeah, Elijah's there, although I

haven't seen him recently.

I don't know.

Yeah, it's been a couple--

probably more-- at least a month since I've

seen him post anything.

But you're right, he's definitely in part of that.

And it's quite outspoken.

[LAUGHTER]

But that's not surprising.

No, he just commented on--

he seconded Henry's idea of calling--

Agent.

--Agenda Agent.

Yeah.

That was on the forums.

That was on the forums, yeah.

Yeah.

I think that's a good name, by the way.

I was going to--

I was trying to come up with things like Chair and stuff

like that based on meetings.

But I think--

I kind of liked Agendinator.

Yeah.

[LAUGHTER]

You've got to say it that way.

The Agendinator.

[LAUGHTER]

Yeah.

I'll be back.

Say, Raoul, could you send me references

to other conversations, communities, channels,

mailing lists, forums?

I'm just curious.

I think I'd like to expand my horizons a little bit.

And it sounds, from what Bob says,

that you're plugged into a good deal more than I am.

Well, I mean, I could point you at the Discord

that has the J channel.

And I can point you at Rosetta Code.

Right, that I know about.

I don't think that I've been actively in anything else

that's J-related.

I look at the group on Reddit.

But a lot of it is about the podcasts

and a couple other things.

But it doesn't get a lot of activity.

Yeah.

The stuff I've been involved in historically,

it's kind of more loosely intangential.

But nothing that I think has a real J focus

at this point in time.

I guess what I'm wondering is, is there

any value to trying to bring some visibility to non-J

but array language-oriented activity for the J community?

That's my question.

That's what I'm dancing around, I guess.

And since you're plugged in, you probably

have a better perspective on it than I do.

Yeah, I don't know that I'm plugged in currently.

At various points in time, I've put effort

in various directions.

But currently, I'm not all that focused on such things.

I won't point out I was coming in from a functional language

direction.

But that group has a heavy focus away from array languages.

So it can be diluted down the wash.

Yeah.

I mean, there's possibilities there.

But it would take a significant investment of effort

to make J a visible competitor.

Right.

Well, one of my ideas about speaking at the Hacker

Conference was to try and reach out to a new audience.

But it has to be the sort of audience that

might be interested in it.

The thing that has generally promoted interest

in computer technology in the past

is the quote, unquote, "killer app," which doesn't really

need to be an app or even need to be killer.

But it does need to be something that

solves problems for a group of people

that attracts their interest, something that

breaks new ground for them, and thus

attracts enough interest to make them want to engage.

Yeah.

Well, it's unfortunate because a lot of the work of the array

languages gets done in finance.

And no one wants to share for obvious reasons.

That's an interesting point.

But it still provides a level of stability

for that ecological niche.

A lot of the sales effort--

I'm not sure what else to call it--

over the years, I have the impression,

has been around mathematical programming.

So if you're doing very heavy math of some sort,

J is a wonderful fit.

And that's great.

I love that.

That's not how I use it.

I use it as a general purpose programming language.

And it says right there in the splash page,

J is a general purpose programming language.

But I don't have visibility into very many people

using it that way.

They're using it as a mathematical programming

language.

So that was one reason, Devin, why

I was so happy that you visited the Hacker Conference

and tried to spread the word a little bit.

That was not a mathematical programming application.

It was a more general purpose programming application.

And J really is a wonderful general purpose programming

language.

And it's just not sold, not marketed that way,

as far as I can tell, which is, I think,

I've always thought a terrible shame.

Yeah, in fact, we had a little module

at the NYC Jog on Tuesday about this Hillel Wayne.

He was talking about toolbox languages.

He mentioned J as one of them.

But one of his examples was finding factors of a number.

Yeah, right.

Kind of mathematical-oriented examples.

But actually, a lot of his stuff was kind of like that.

So that's probably him as much as anything.

Well, also, you don't want to be niched like that.

You don't want to be categorized as a toolbox language.

You want to be a general purpose language.

You want to be capable of tackling

any problem of whatever size.

You don't want to be relegated to being reg x, for example.

I think that hits there, is J is a great general purpose

language for an individual.

It struggles being a general purpose

language for organizations, because we

don't have the tutorial for how to tackle

the problems of creating interfaces that

let people work together in that kind of environment.

You get to the point that you see it's simple.

Then how do you teach somebody else the simple stuff?

Because it's not simple for somebody that

doesn't know how to do it already.

And there's definitely things that you

need to do when you're working with a group of people

that are very different from when you're solving

a problem for yourself.

That's an interesting point.

I heard Alan Kay once many, many, many years ago now

explain that most people react to APL

as if they've just found something moist and furry

at the bottom of a garbage can.

And that has always been the reaction

I've gotten with J at various times

when I've tried to pitch it to my various employers

over the years for that problem domain.

It's very hard to get past that.

Very, very hard to get past that.

An employer's going to want--

for an employer to find a language interesting,

they need to know that there's a surplus of people available

that can come and work on it.

And that it's easy to learn, which

is also not going to happen.

Yeah, they don't care that one J programmer could outperform

five C programmers if they have a pool of 100 C programmers

to choose from.

Unless they have some other in on it already.

And they've got some reason to buy in on it already.

Well, it's worse than that.

I mean, they've got legacy code, so they can't give up

their C programmers.

But the other problem is, oh, you

want me to reduce my headcount?

Yes, I'm a manager.

Ambitious.

I want to enhance my career.

Of course I want to reduce my headcount.

That's crazy.

That's not a selling point.

And there's also the issue with having a one-person department

if something happens to that person.

You lose 100% of your programming staff.

It's not a good management decision in that case.

No, it's terrible.

Yeah, I just saw something on Slashdot.

It was someone writing in.

They work for some kind of logistics company.

And they're asking-- not Slashdot, Hacker News--

and asking Hacker News, should we

insource our development, software development?

Because they rely on an external company, which

is very unresponsive and doesn't do a very good job.

But they don't have any other choice.

And I was thinking, gee, in logistics in particular,

ManUgistics had that name for a while

because they were ascendant in the logistics area for a while.

I put a link in the chat of an article

that Mark Gustell, who's an educational researcher who's

specialized in computing languages and teaching

computing to people.

And in this one, I just kind of glanced over it.

But essentially, he's making the case

that a lot of STEM researchers don't need to be programmers.

And they do need to be programmers.

But they don't need to be computer scientists.

And what he's saying is that as the LLMs come in,

that may be more and more common,

that you need to know how to program.

But you're not going to program.

But you need to know the process and how

it's going to work in order to use it effectively.

And so he's suggesting that computing languages should

be part of STEM, even though people in STEM

may never, ever program anything.

And I was wondering whether the array languages fit that.

Because typically, it's easier to pick them up

for people who haven't been trained in computing science

before.

Yeah.

It's interesting.

Well, part of that, too, there's a known second language

problem.

As the second language is sometimes

harder than the first one because you

have to unlearn what you learned with the first one.

Well, and a paradigm change is even--

it's probably harder to learn.

From what I've heard, Arabic is a hard language

to learn if you're English speaking.

But if you're in a close associated language,

it may not be as hard.

Right.

Dutch is apparently the easiest language for English speakers

to learn, strangely enough.

I've heard there's a lot of shared words and things.

Well, a lot of the incognites are probably both

descended from Old Norse.

Yeah, well, according to my brother,

who likes to research stuff like this,

the three hardest languages are Japanese, Chinese, and Arabic,

according to the Naval Postgraduate

School at Monterey.

And it's weird because Arabic at least is alphabetic.

But I guess it's hard enough.

Anyway, so that actually swings back to the talk

I may be giving at Iverson College,

or the colloquium's host at Iverson College,

is what is appropriate audience?

And it's not so much of how do we bring an audience into J,

but how do we--

and I'm looking at more general array languages--

how do we project ourselves out to an appropriate audience?

And the most appropriate audience I've always felt

is ages 6 to 10.

But it's almost impossible to get into curriculum.

Yeah, well, I couldn't get my own daughter to do it.

I couldn't get myself.

And she is a programmer.

Was she a programmer before you tried to get her into it?

No, no, she'd taken one Java class in college.

And after she graduated with the music major,

a friend of hers told her about this hacker school thing.

And because she had a little bit of a portfolio because

of the Java work, she was able to get into it.

And then that launched her paying career.

But you see, that's the sort of thing--

that bridge to something that interests you,

that cool factor, a hacker school, that kind of thing,

will draw people in with other talents.

Yeah.

Well, I did try, because someone--

maybe Rick Sherlock put together a ContraDance app

with stick figures to animate it.

And my daughter calls ContraDance.

And that didn't work.

And anything like this needs a lot of opportunities,

a lot of patience, and a certain amount of--

the remaining factor is--

oops, lead-ins.

Well, yeah, there's always an element of luck.

But I also spent all my time raising my kids to tell them,

you know, luck is what you make.

It's not something that happens to you.

Yeah, exactly.

Yeah, I mean, it is happenstance.

But you can put yourself in positions that are better.

But thanks to Unchance Favors, the prepared mind.

It's very difficult to turn Jay into a Christmas gift,

or any programming language, really, for that matter.

Yeah, well, again, I think a lot of it--

something that's come back into my mind a number of times

is--

I don't know whether any of you used

to watch the old NFL films.

That was in the 1970s.

They'd play this dramatic music.

And then suddenly, all the cameras would go to slow motion.

And it was a half-hour show of what

had happened in the NFL the previous week.

But they had the most amazing cinematographers

shooting reels of 16-millimeter film in these end zones.

So you'd see the ball, the follow focus on the ball,

the laces on the ball as it comes in towards the hands

come up, and it's caught at the crescendo of the music.

And it's all just super dramatic.

And they had this great voice of God announcer over top of it

and build it up.

And it was a half-hour long.

And that, I think, had more to do

with the NFL becoming popular than anything else.

Because before that, the NFL wasn't as big as baseball.

Baseball was a much bigger sport in the States, way bigger.

But then with this-- and NFL isn't as--

if you watch an NFL game-- well, I don't know.

I haven't watched an NFL game.

I watched a CFL game live.

It's not nearly as interesting as watching it on television.

Because you can see replays on television.

You can see analysis of everything on television.

But it's that presentation that I think builds fans.

And starting with slow motion, powerful music, great stories,

and appealing to 14-year-old boys.

And before you know it, you've built a fan for life.

Yeah, and now, I think, especially

with the rise of fantasy footballs,

like there's a channel that just shows all the games that

are playing right now and just the interesting parts of those.

Well, and the difference you see there

is now football has brought betting into itself

in a big way.

They're partnering-- hockey has as well.

Baseball, because of the Black Sox, it's 1919,

really wants to kind of stay away from gambling.

But the other sports are growing because of it.

They're growing an audience in a different direction.

Yeah, I was thinking of shorty and draft kings just today.

Because their numbers look ridiculous.

But it's one of those irrational things that I stay away from.

[LAUGHS]

Maybe the secret is to see the domain that isn't--

and maybe this is why it's now so hard--

is to see the domain that doesn't have a programming

culture yet.

So it was pretty easy for us to get into.

It was pretty easy for--

I don't know the whole story of how APL got into finance.

But there wasn't a lot of programming in finance

in the early days, right?

Yeah.

Yeah.

It was a lot of people who wanted to do stuff.

But it was too--

my theory is too complicated to explain to a programmer who

didn't understand finance.

Like the first options books, Cox and Rubinstein,

they wrote APL code to do the equations.

Because it was too complicated to explain to a programmer

and expect them to get it right.

And it was easy for them to pick up this tool.

And they didn't have Excel.

Excel is one of the things that really hurt APL.

It's because it took away that.

Yeah.

I remember the guy who introduced me to APL

was the guy at Morgan Stanley.

And he was just bitter about the spreadsheet.

And kind of killed it.

It just killed it.

I think in those areas, I think Goodstyle's paper

kind of-- or blog post kind of skirts around this.

Right now, I think if you looked at, say, graduate students

in STEM who aren't computer majors,

you think there's an opportunity there.

But that's what Python has moved into, right?

They've jumped in.

And they've grabbed the science.

It's not maybe the most efficient.

But it doesn't need to be.

Yeah, and Python's probably eaten a lot of R's market share

as well, because R used to be big in anything

related to statistics.

Yeah.

Well, I think we're going to talk

to Paul Teter, who wrote our cookbook on Monday.

Oh, cool.

Yeah, I was talking to him in sort of the tech talk

for setting up to make sure his mic was--

he's going to be really fun.

He's a really good talker.

I talked to him a couple of times.

Really good talker.

Fun.

I talked to him for an hour.

But anyway, I'm sure he'll have some insight and we'll

bounce on that, is where is R going and how does it fit?

But I think it has that niche within statisticians,

because it has so many libraries that are custom made.

That it's probably anchored in there

and is probably quick enough that it may not

be overtaken by Python.

The article by Hamilton--

Ryan Hamilton about KDB+ was on Hacker News.

And I think you referred to it in the end.

Yeah, I did the summary of it.

Yeah.

That sort of indicates that maybe KX

has missed the boat with KDB+, because other groups have

done the end around and there are lower cost

ways of achieving it.

Yeah.

And like I say, based on the K conference

I went to two years ago, they've gone heavily

into making it very Python friendly, which is probably

a smart thing to do.

For a while.

Until the next wave of fads hits.

Yeah.

Which is by LLM.

Well, that's the interesting thing,

which you're using an LLM, it doesn't really

matter what programming language it generates.

You're not going to be looking at it anyway.

You're worried about the tests.

Well--

You're worried about the tests, but you're also

worried about the rough edges and the predefined areas

of effort that you have access to.

Because on the one side you have the--

this is easy, just go off and do this one thing.

And that gets you a few things.

And on the other hand, you have the hardcore hackers

that have a deep understanding that step by step

are breaking new ground.

But then you have all of the domain areas

that you want to tackle that are stretched between the two

and broken by partial understandings

and imperfectly related concepts and novice ideas

and stuff like that.

That's where everybody wants--

that's where the meat is, I guess.

Yeah, the other thing about LLMs,

though, is you're concerned about the size of the training

set.

So it'll probably be better with C++ than with APL.

And in fact, I had proposed when Morten was in town

for the Eclipse that maybe I could write something

on chat GPT for APL.

And he was very skeptical based on the training set issue.

Well, when you're dealing with a programming language,

the training set really should include

a way of bringing the thing that you're training up

with an interactive session or some way of testing things

against a live--

ideally more than one live set.

So it's going to try stuff, see if it actually works.

Because it's one-- you can go out and you can go find stuff.

And there can be a huge body of that, and that's great.

And that does serve a purpose of linking goals up with examples.

But that only goes so far because some of that's

going to be buggy.

And--

Yeah, you're training with crap, and you'll get crap.

Yeah, and at some point, you need

against the actual machine that deals with stuff.

And there, I just--

Well, we're seeing these people on Fire Island next week.

And the guy, he lost his job.

But until recently, he was working as an LLM trainer.

They basically would present him with stuff,

and he would provide the human take on it.

And it was specifically for training language models.

And it was terrible work, too, as you might expect.

That feels like the business analyst role in an agile shop.

And this is something that Raul alluded to a minute ago,

the notion that you've got to convey clearly what it is

that you want.

And BAs convey it to programmers who

understand things like trees and sorting and so on

that BAs don't really understand.

But maybe a BA can just reorient himself to an LLM,

produce code.

And then there's a testing group that's

dedicated to writing tests.

And you still need those guys.

Their job's interesting.

They're more secure than anybody's.

So they're writing tests.

But it's not at all clear what the old programmers

are going to be doing.

You may need one very expert guy, person,

to make architectural decisions, broader decisions.

But I'm not convinced you need a programming shop the way

we usually understand the term.

Yeah.

You're talking about writing tests,

or you're talking about basically testing

the output of the program, testing the way

the program--

Like QA, because you've got to be--

the LLM does something, and you don't know if it's right or not

for someone else.

It's QA, and it's also unit tests.

I'm convinced you'll still need those.

But definitely QA.

Yeah.

Oh, I think so.

Is there a niche there?

I don't know whether an array language would have any

advantage in that kind of a thing.

Not really.

It's a language.

It could be any language.

You can have the LLM output Python, or J, or C,

or whatever, and you don't really care,

because you're never going to look at it.

If you don't like it, you will go back and have the--

you will adjust the prompt to the LLM

and have it generate a new system, a new C system,

or Python, or J, or whatever system.

But you will never look at that source code

any more than you would look at the output of a C compiler's

object code.

But I do-- that's a bit of an exaggeration.

I mean, people do look at the output of C compiler code

in various contexts.

And generally speaking, a lot of consulting context

and a lot of--

you're building a new-- you're building a thing,

and you just build another version of it

rather than getting the whole work.

But the thing that happens when you do that

is you lose track of various use cases that have gone live,

that aren't being tracked.

They're not part of any testing.

It's just kind of how this works.

And so people have learned to use a thing,

and they're using some weird combination that is now

considered a bug by the people that are trying to replace it.

And so it gets some weird fragmentation stuff.

But it's a problem anyway.

That's a problem with the current approach.

Right.

And the way that you work around that

is, one, by the whole alpha test, the beta test release

process, where you make small changes,

and you put out your field and get feedback.

You also have people that do, I guess

you call it, archaeological work, where they go in

and actually do try and understand the old code

and fix it up.

And you have the release model where

you release a new version, and some people

stay on the old version, stuff like that.

So anyways, there's a lot of churn there.

There is.

But I'm convinced that everything we do currently

could be translated to that new model,

and you wouldn't need the programmers anymore,

except in some rare instances, about as rare

as when you have to look at the output of a C compiler

and understand its object code.

And the challenge of coming up with tests

is very similar to the challenge of the legacy enterprise

support thing.

And it's never been fun in the general sense.

There's hobbyist legacy enterprise supports,

except maybe in third world countries where they have--

that's their bread and butter or something, maybe.

I don't know.

But the thing that is pointing out

is turning that kind of tracking of issues

into productizing it, I guess.

How do you help an organization understand itself

when the organization is devoted to throwing out as much as it

can because it costs too much?

Because array languages are essentially

on the foundations of linear algebra,

and the models are basically huge, complicated linear

algebra stacks, is it possible that there

are ways to use array languages to query the model

and get information out that otherwise is almost

impossible for us to assess?

What model?

I'm sure.

Like an LLM model.

Yeah.

Oh, I see.

Oh, no.

It'd be a good way of modeling a model.

Yeah, and they're notoriously opaque.

So there's probably a need for that.

Imagine a multi-billion cell spreadsheet,

and then I'll give you a query language

to go after the contents of that spreadsheet.

Best of luck.

Best of luck.

Yeah, but that's if you're a human being.

But if you're an array language, it's like, well,

that's what I deal with.

That's what I do.

And we just have to--

The problem is to infer meaning from all of those fractions

between 0 and 1, those billions and billions of fractions

between 0 and 1.

There is work going on on that, on trying to figure out

what it is that an LLM knows from the bottom up,

rather than by talking to it, just by looking at the weights.

It's very odd.

Very odd.

It's kind of like integrating ArrayFire into J.

It's kind of a similar kind of a problem space.

You can see that the similarity is there,

but it takes somebody that's motivated and dedicated

to do the heavy lifting.

And then once that happens, other people can go along

and say, hey, look what I can do.

Yeah.

Well, that's what I was talking about.

It sort of gets back to the killer app.

But in that case, it's the old thing in the gold rushes.

The guys that made the money weren't the guys digging the gold.

They were the guys selling Levi's.

You develop a tool, a pick or a shovel,

and now you've got a way to consistently make money

for the next 40 years.

And you've got to be first in.

Gold or not.

And the other problem there is that people--

the whole-- the best return on investment

is when investment's practically zero.

And then people-- that causes people

to see that in action, be very skeptical and cynical,

and avoid breaking ground because they don't--

they've been ripped off a few too many times.

And the whole thing kind of goes off the rails.

But that is an area where I think the array languages have

an advantage because you're not looking

at the huge cost of several hundred programmers

to try and build something.

You can do it with a much smaller group.

But you do hit the skepticism from people

who've been sold bad.

Yeah, they've been sold nothing at too high of a cost.

And now they're skeptical about things that are close to that.

So Ed, when you're talking about testing or developing tests

for these things, what sort of tests are you talking about?

Like--

Two kinds.

Unit tests.

Still think you need unit tests.

But you also need what the QA team, which

where I've worked over the years,

has always been an off-shore team with an onshore component.

But yeah, these are people who put together

test scripts that can drive GUIs.

And they got expected results.

And they compare.

And they run them every night or however often they can.

And yeah, I think those guys are still very much needed.

Yeah, well, I worked in QA for about five years.

Part of it is understanding things that the programmers

don't really understand.

So I had one case.

They were trying to develop the equivalent of a QSIP,

a uniform identifier code, for mortgage-backed securities

or something, which there aren't QSIPs for.

And they came out.

So they basically copied what the stock QSIP people did.

And they got it wrong because they were trying

to compute a tech digit.

And the way they did it, sometimes their tech digit

was 10, which is two digits.

And it was such a battle to get them to understand

why this was wrong.

Right.

So QA does that.

QA finds the fallacies, finds the misconceptions

that the programmers and the business analysts

are laboring under.

So you have a test suite of common questions.

And then you'd evaluate how close

they were to accurate answers.

Is that the approach you take?

Well, that sounds more like unit testing.

But QA is typically the outputs of the program,

the interactions of the program.

So it's the visible parts.

Yeah, so a lot of it is just running the code through,

in some cases, extreme cases to see how it behaves,

and checking a lot of edge conditions and things

like that.

Yeah, and what you could imagine doing

is if you laboriously developed a QA test suite,

you could give the LLM access to it

and say build a system that passes this test suite.

And it would iteratively do that.

You'd probably have to give it some more information

in addition.

But that would be a reasonable first step.

And it's--

And you don't care what language it's programming in.

Yeah, no, no, it's functionality at that point.

What tools are best to use?

Yeah.

Although another approach would be to anticipate,

at some point, LLM is going to be past the fad stage

and into the old new stage.

And whatever is coming up next is going to be replacing it.

So another approach would be to get on the ground floor

of that, which lets you spend time without much competition

until it hits.

Right, the problem is anticipating

what the next thing is.

Yeah, and/or possibly--

If I knew that, I wouldn't have to worry about my retirement.

Oh, that's what marketing's for, right?

Cynical, cynical.

Maybe too much.

I've heard arguments that the LLMs are a bit of a bridge,

but they're still looking at neural networks

as maybe something that's more effective.

Well, they are neural networks, in fact.

They have a neural network component, in effect.

Yeah, but more--

I think they're wondering about more,

not the statistical aspect of it to create it,

but one that's a bit more condensed.

Well, and in some sense, the thing

that distinguishes a neural net from an LLM

is literally a training set.

Right, it's a focus of what you're trying to achieve,

which also kind of argues against it

being good at programming, because if it's

trained in language, and language is not

the same thing as programming.

You can train it on programs.

You can train it on source code.

I mean, there are only about a trillion lines of Python

out there for it to learn from.

Right.

Although the thing that you get there is naming.

In programming, the language itself has a few words,

and it's a very sequential thing how they mean.

But most of the-- when you get into actual programs,

most of the words that are involved

are chosen by the programmer to represent concepts that--

tied interfaces that are independent of the language.

All the language provides is a few keywords and some grammar.

But you don't care if the LLM is producing obfuscated code.

You don't care about naming.

That's the wrong side to think about this.

Or a wrong side, maybe.

I am capable of many wrong sides, Rolf.

I have written programs before where I was not

able to come up with good names.

And the canonical example of that

is when I was doing a parser for--

I don't even remember what the parser was for--

for some config files.

And I think all of the names I used were from the Flintstones.

So I had a yaba and a dabba and so on.

Oh my god.

But that-- my insight there, or pseudo insight maybe,

is that if you put a LLM learning about that,

it's going to see these words, and it's

going to put them in some order.

It's going to train against them in some way.

But value on either the application side or the user

side would be gained from that training effort.

But wouldn't you try and, say, anonymize it

by just putting tokens in the place of names?

Well, yeah.

That's the thing that ultimately you're doing in programming,

or at least in the implementation side

of programming, is you can take names, and you can rename them.

And as long as you know the scope,

you can figure out which names are the same thing.

If you don't know the scope, then

you're relying on the programmer having chosen

either different names for different things

or maybe the same names for the same thing

in different contexts.

There's a whole bunch of subtleties there for naming

and for significance that just--

you have to have a good--

for a firm, you have to have good mechanical knowledge

of how the sequencing works, how the data flows,

and all that stuff.

And if you don't do that, it's noise.

It's a lot of noise.

And yet you have LLMs that can write

paragraphs in the style of Dickens or in the style of Joyce

or--

I mean, those are like programmers, right?

Right.

And if the same-- if there's something out there

that somebody has done thousands of times,

thousands of different people have done thousands of times,

and the LLM just has to pick one of those, it's pretty easy.

But--

When you're doing something new, I

question how effective it's going to be.

Yeah, like--

If there is anything new.

I suspect there is.

Just take something like a web app that takes some--

a web app that takes somebody's name,

it's not going to do anything with it.

A web app that takes weight of measurements,

and in one form, they're numeric,

and in another form, they're some internal form.

And then you translate it to some other unit.

All of a sudden, you've got three different ways

of referring to the same thing.

And that starts getting complicated enough

that the LLM has to have some way of associating

those things in a mechanical fashion

before it's able to treat the domain very well.

I will toss in an optimistic note.

My brother-in-law runs a company that has a programming shop,

and they adopted Copilot early on.

And according to him, it doesn't help his star programmers

at all, because they're working on problems nobody's ever

worked on before for him, at least as far as anyone knows.

But it helps the mediocre or less star programmers

perform like star programmers in terms of functionality

achieved.

It's always been hard to measure that,

but that's his qualitative impression

of what's going on.

But maybe there will always be a role for pioneer programmers,

I guess is what I would say.

And maybe that's a good--

maybe J is a good language for pioneer programmers.

Maybe that's a good way to think about it.

It's always been true that--

I think it's always been true that array programmers are just

basically--

I'll say this-- smarter than the average programmer,

or better at programming than the average programmer.

I feel like the only reason I am comfortable with J

is that I've spent a couple of decades trying

to get comfortable with it.

I don't feel like I had any particular affinity for it

at the outset.

And Stanislaw Lem, the Polish science fiction writer,

observed that if you were sufficiently patient,

you could teach an ape a calculate.

And I've always felt that way about my knowledge of J.

I was just very patient.

You can take bigger steps with J,

which makes it great for prototyping.

Yeah, exactly.

And the way you want to run a--

if you're actually doing programming as a business,

what you want to do is first you want to get something

that approximates--

that does most of the work.

Then you take that apart and have teams of it

go back over it again.

And you know, fill and flush it out.

Rewrite it and flush it out.

Do it using some team-oriented programming language

that lets you feed small bits of work to different people

that do different things.

And--

Prototyping might be a good way to think about it.

I call it pioneering, but maybe that's just prototyping.

Maybe you're right.

Pioneering is a good word, yeah.

Well, and the other thing I think

of when you're talking about your base level programmers

being elevated, the floor coming up because of copilot,

that's the same sort of situation

that Guzdiel's talking about with STEM graduates.

You need something to bring you up a level.

You don't need to be a star programmer,

but you should know basics of programming

or working with a computer before you actually

start working with one.

It's like an essential knowledge.

And I think in that sense, the array languages actually

are probably easier to access than a lot

of the procedural language, their loops,

and all the ceremony that has to go into programming.

Yeah.

I mean, it's always attracted to me

is the absence of unnecessary cruft.

Like just for me, having to say, OK, this is going to be an int.

And maybe way on down here, you're

going to exceed the limits of an int,

and then you'll have serious problems.

Well, and how many lines are there

between where you declare something and where you use it?

And then it changes, and then you change again.

And now you're having to look at pages of code

to find out what's going on as opposed to maybe 10

lines of an array language, which

seems to be easier to keep in your head

when you know the idioms that it's built on.

Yeah.

Depends on the kind of program you're doing.

If you're trying to solve a problem,

and you have the concept, and you're

trying to get to machine, then something like J is great.

If you've got some program that it's out there,

you've got a whole bunch of people working on,

you want those itty bitty baby steps,

because everybody's stepping over everybody else,

and you've got to have some way of resolving the conflicts.

And so you don't want people taking big steps

you want people taking tiny steps.

Yeah.

Was that an argument for verbosity?

Sort of.

The way of creating--

Well, it's like--

--people can work it?

Think of it in military terms.

If you have somebody out there doing scouting,

that's one thing.

But if you have a whole battalion out there

of people that are supposed to be working together,

they all need to stay in step and go--

they aren't going to be very good scouts,

but they can do a lot more of the stuff that they do do.

And that comes back to Ed's pioneering program.

I mean, the scout is a perfect analogy for--

It's a similar-- or like if you're

building a suspension bridge, the first thing you do

is get a string across, and then you start doing the cables

across, and then you start doing foundation.

You build it up from there.

It's-- there's-- a string is great for one thing,

and a cable is great for another thing,

and a bunch of concrete is great for something else.

And the guys that fired the string across

are probably off at the next gorge

while the bridge is being built.

And if-- or if you're talking about building in general,

that there's architecture, and then there's

people that go down and lay the bricks,

and the people that go down and lay the bricks

are going to do a lot of the same thing over and over again.

And they don't-- they're expecting somebody else

that's already done the architecture stuff,

so they're not interested in that.

Yeah.

Hmm.

Anyway--

Once again, I have the feeling that we almost

solved all the problems of the world.

Come on, almost.

Oh, we almost recognized them, at least.

Hopeful, yeah, right.

I'm hopeful for next time.

Well, I'm using it as data for my Who's Our Audience,

because I think it's all useful to me that way.

Yeah.

And I'll be in the air next week.

Yeah.

Jolly old England the week after that, and then back again

for a week before November.

I'll be in the air exactly a week from now.

I have an 8 PM flight.

Yeah, I think I fly to Montreal at about 4 in the afternoon.

Get a Heathrow the next morning, bright and early.

Yeah.

I see if my new noise-canceling headphones

are worth the $100 I paid or whatever.

I'm sure they will be.

I sprang for some Bose earbuds a couple of months ago.

And I have a--

my aunt tried them out.

I cleaned them carefully.

She tried them out.

And she was completely blown away.

She immediately got on Amazon and bought them.

And they really are quite spectacularly good.

I actually own a pair of Bose noise-canceling headphones.

And the earbuds are better.

Wow.

No question about it.

Because I got over the ear.

The main problem I've had is getting it to connect

to the proper Bluetooth because there's nothing

on the headphones to tell you.

Oh.

So I think it's probably something with the phone app.

I haven't learned yet.

But I figure, worst comes to worst,

I'll put on the noise-canceling headphones

and put the little earbuds inside.

And--

Well, you know, my son has--

my son has Schumer's earmuffs.

He doesn't shoot.

He just doesn't like loud noises.

And he will wear earbuds with Schumer's earmuffs over them.

And that is a good solution if you're into that.

Yeah.

All right.

I will offer a closing thought, which

is going back to Ro's point about the difficulty of naming

things.

I have a cousin-in-law who's a lecturer at Trinity in Dublin.

And he has a t-shirt he's very proud of that reads,

there are only two hard things in programming--

cache invalidation, naming things, and off by one errors.

[LAUGHTER]

Yeah.

Yeah.

True.

All right.

Well, Bob, Devin, good luck to you both in your travels.

And I will see you all next time.

OK.

Great.

Take care.

Thanks for now.

Have a good one.

OK.

All right.

Bye-bye.

Thanks so much.