Wiki/Report of Meeting 2024-01-18

From J Wiki
Jump to navigation Jump to search

Report of Meeting 2024-01-18

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

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

1) Ed thanked Adám Brudzewsky for the pointers that he provided to accessing repositories including GitHub. Ed believes that he has increased the accessible corpus of GitHub J code from 3000 to 4600. Codegolf remains a challenge as the links do not access solutions for specific languages. Ed is using https://code.golf/ and is working the problem to retrieve the solutions in J. Bob wondered if https://codegolf.stackexchange.com might be a better repository. Devon suggested using #J as a suffix to access for code.golf and will pursue that as a possible solution. Ed is considering the challenge of accessing the new j forums on google groups.

2) Bob showed the further work that he had done on the Communities page https://code.jsoftware.com/wiki/Category:Community_C using expanding links. The feedback from Devon was that the entries should be expanded and the Table of Contents which had been hidden should be shown to use that as the access to the different sections. Raul mentioned that transclusions might be a solution.

3) Ed asked about how the challenge of multiple parent categories was handled. Bob said that he had started out hiding the category pages to reduce noise, but that Skip had pointed out that having the categories shown would be of benefit to those who are searching. There are two types of category that are being used in the wiki. The structural categories are organized as a tree and the tag categories are less structured, but provide alternatives for users in their search

4) Bob talked about solving the addons wanted pages https://code.jsoftware.com/wiki/Special:WantedPages issue by creating pages that linked back to the GitHub repositories. This was a quick solution and future wanted pages may take more research to resolve. Bob thanked Devon for doing all of the maintenance on the NYCJUG meeting page as it is a valuable resource. https://code.jsoftware.com/wiki/NYCJUG Devon is working from hardcopy to rebuild some of the meeting information, which is a significant contribution of information that would otherwise be lost.

5) The rest of the meeting involved some of the explorations that had been done to visualize tacit programs. The transcript of this will be available below if there is interest, as it was a very unstructured wide ranging discussion.

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

Transcript

- So would you like to start us off Ed with,

what's new with the JViewer?

- Sure.

So Adam Brzezewski had a number of pointers

to repositories that I've been starting to tackle.

And in particular, which I thought was great,

was he pointed out that there is a search facility

in GitHub that lets you search for repositories by language.

So any repository that has a J file in it, for example,

is going to show up.

So I just got that,

I'm pretty sure I just got that working today.

I haven't completed the test yet.

It hadn't quite finished running

by the time this call started.

But I think the number of IJS and IJT files under index

as it were, has gone from 3000 to 4,500 off of GitHub.

So a significant increase in the corpus.

So that's good.

I'm still struggling with CodeGolf.

I cannot see the solutions.

And Raul, you're right.

You get a J implementation when you click on J,

for example, for a particular problem.

When you click on J for a particular problem,

but it's just some generic J code.

It's not an actual solution, at least when I do it.

So I am still struggling with that.

- So if you do #J on the URL,

it gives you non-solution J.

That's not necessarily, that's strange.

I know that they've been, hmm.

- And I get a list, oh, sorry.

- I should go look at some more of the examples

of CodeGolf links that I've got

and see if I can figure out a pattern here.

- If you wouldn't mind, I'd very much appreciate it.

I do get a list of contributors of solutions

to that problem, but clicking on them

just takes me to contributor pages.

It doesn't show me solutions.

So I am at something of a dead end at this point

with respect to CodeGolf.

- That doesn't really surprise me

because it is a competition, right?

- It is, but the goal is to come up

with the shortest program.

And so it seems to me that showing you

other people's contributions does not compromise that goal.

You could start with the shortest solution

and you wouldn't, you know, you could duplicate it,

but that, I presume they detect that

you wouldn't be any further ahead

if you could come up with something a little shorter,

that's great, you should contribute it

and that should be considered a success.

- And it's CodeGolf.stackexchange.com

you're going to, right?

- Let me check you something.

(video playing)

(video playing)

- Oh, hi Devin.

- Hi.

- I was off doing something else.

We're just trying to figure out

how you can get access to CodeGolf programmatically

to be able to include CodeGolf solutions into the JViewer.

- Nevermind programmatically, just using CodeGolf,

how do you find--

- You're just navigating there.

- 'Cause if I go to a link for CodeGolf.stackexchange.com

that I had stored in my computer,

it immediately shows me all the solutions that came up.

- All right, it's not CodeGolf.stackexchange.com,

it's the link I sent you, try that.

- Okay.

- Well, there is a Code.golf.

- That's what I'm sending.

- Okay.

- And maybe I, I mean, that's what I got from Adam,

but maybe I should be using something else.

- Yeah, you could take a look at CodeGolf.stackexchange.com

'cause it's a golfing site, it may not be the...

Oh yeah, no, I've been to this one too, yeah.

Yeah, this is a bit, to be quite honest,

I've never actually been able to golf on this

'cause I can never figure out exactly

what they're looking for.

Like, I'll give an answer and it'll,

well, I just can't remember where it screws up,

but I've never really got the hang of contributing to this.

- Oh, interesting, okay.

- Yeah.

But in CodeGolf.stackexchange.com,

well, let me grab a link and I'll put that in the...

And it's just an example, but...

That's the one I just pulled up.

- Right.

- And it gives me a full list of all the examples

in all the different languages.

Now, you'd probably have to do some scraping

to pick up the J ones, but...

- Well, the one I was looking at, let me see.

I just picked an example.

Okay.

And it ends #python, but I guess that...

(sighs)

Oh, here we go.

Yeah, it looks like #J after the name of the problem.

- Oh, perfect.

- So...

(silence)

Well, there isn't one for ASCII triangles.

Devin, do you have a sample link that has a J solution?

- Oh, no, there is one for ASCII triangles.

It's down the ways, 'cause when I was looking,

I pulled it up off my history and...

- Oh, my bad.

- I was looking at problems without solutions.

- I see, that's why there's this nonsensical J code here.

That has nothing to do with the problem.

It must be like a placeholder.

I'm looking at the abundant numbers

just 'cause that was one of the first ones.

- Here's J 20 bytes, but J is not a link,

so it's not programmatically detectable, really.

- Okay.

So there's not a way to just scrape it off

that J comma 20 or J comma space.

- It sort of depends on whether that headline

is programmatically generated based on form filling

or the user just typed it in.

I don't, I just don't know.

- I think it's, I think the J comma is...

I think the J comma and the length is programmatically.

I don't think you typed that in.

I think they generate that off of what your solution is.

- Well, look at the next one down, Commodore Basic.

- Oh yeah.

- That doesn't look like a form fill.

That looks like...

- That's right, you're right.

- Somebody typed that in.

- Wow.

- Interesting.

All right, that's worth looking at,

but it's not something to take up our time with.

- Yeah, yeah.

- But that's good to know

that it's code golf.stackexchange.com.

Maybe more fruitful.

- And some of them do have links,

so I wonder whether there's just something...

- I'll investigate, Bob.

I'll let you know next week what I find.

Thank you for that, I appreciate it.

- Well.

- And I've set aside the problem of getting access

to the J forum on the new Google Groups platform

because it's a beautiful problem

and I want to admire it from a distance for a while.

(Bob laughs)

And that, Bob, is all I have.

- Okay, well, thanks for that.

And then I guess the other thing is

I don't see a lot of traffic on the J forms right now at all.

- Yeah, and I thought it was something broken,

but I think it's just lack of traffic.

- Yeah.

- Even on the old platform, we'd go through fellow periods.

It's not too strange, I think.

- But this one coincides with switching over.

- Yeah.

Maybe it's a dry January effect.

- You may be.

(Bob laughs)

- I like the idea that J programmers need to be lubricated

and communicate with one another.

- That would sound about right, yeah.

- Yeah, I'm wondering whether people are still using

old links to the old forums and it just going into a space.

- Well, I talked to Chris Burke

and I actually sent an email to an old forum

and that went through.

- Okay.

- So it's just people aren't,

he double-checked, they weren't sending.

- Okay, oh, well.

If it's just a gap, it's just a gap or?

- Yeah, I think it's, well, it's real for whatever reason.

People are just not posting as much right now

or what I see in my mail seems to match what's on the group.

- Perhaps J programmers have an unbelievably low hurdle

to get over to be able to even post questions.

(Bob laughs)

- I would think of it more in terms of

what have I done recently that's worth talking about.

- I suppose, but there used to be questions, right?

- Yeah.

- People used to come up with questions.

Like people you wouldn't always see

would come up with questions.

I'm not seeing that either.

So anyway, as my wife says, not my monkeys, not my problem.

- Bren Lebowitz once imagined a world

in which every writer in America wakes up one morning

and can't write and they call each other

and they all realize that they all can't write

and they realize that it must not be their fault.

It must be everybody else's fault that they can't write

because they all can't write and they go on strike.

And the title of the article is

Writers on Strike, a Chilling Prophecy.

And maybe there's an essay to be written

about J programmers on strike.

It's entirely possible.

- I don't know.

I mean, I admit I've been doing some more Q lately,

but I did have my NYC Jug last week, so.

Which Devin, I responded to and I said, I'll be there.

And then I wasn't, and I apologize.

That's about the most obnoxious thing you can do.

And I'm sorry.

- That's okay.

I just see who shows up.

- And I guess I'll move on to what I've been doing

with the community category.

And that's what it looks like now.

So with these, hitting expand collapses

and expands the links, which are the same links.

If you go to this, they're the same links.

In fact, I've copied over from one to the other.

There is duplication there, obviously,

but I'm comfortable with that because of the categories.

If we're going to show the categories,

the fact that we have a category

that's other array languages,

that category will show up in other areas

that they linked to other array languages.

If you don't do that,

if you don't have a separate page for the category,

then you would only send it back to the community page.

And then you'd have to look through all these

to find out where the category links up.

So it's how I've done these particular newest ones

that I've done was essentially making them

here so they're in this form,

except they're open and collapsing them.

And if I go back, it's exactly the same information,

but you need to expand.

So that's the only difference between the two.

And that just means there's two places to go to look for it,

but it's easy to copy over back and forth

and then you get the benefit of the category.

So I think that's the way I'll do it going forward.

- So if you expanded all of these, how tall would it be?

- Well, I think if you look at users,

oh no, actually that wasn't too bad.

It's not too bad.

- You could have them all expanded easily.

- Oh yeah, I could easily do that.

I mean, it's just an easy thing to set up.

I mean, it's literally-

- But they will get better.

I mean, the first thing,

when I looked at other array languages,

I'm thinking I should put R on there.

- Yeah, and when I was doing this this morning,

I could also put WeWa in and,

oh, there's a whole bunch of others that have come up.

- See how nice it is to have everything expanded

right at the outset, you notice things.

- Yep.

- Have you tried using a transclusion?

- I have not.

- That might be worth doing.

- What's a transclusion?

- That's including a page on another page.

- Wow, that's a term blast from the past.

That's from,

who's the guy who invented hypertext?

Ted-

- Nelson.

- Nelson. - Ted Nelson, right.

- Yeah, yeah.

So if I did a transclusion, say under the users there,

what I would see is what's on the user's page underneath it?

- I think so.

If I understand the,

I put a link in the chat for the documentation.

- Okay.

Okay.

I'll make a point of saving that

and then take a look at that and see how that might work.

'Cause that would mean I would only have to do it

in one place, but then the question would be-

- Does it support category pages?

- Well, yeah.

- Or how does it support category pages?

- Yeah, I mean, it should support category pages.

They're just a different type of page, but they have-

- Well, the question is,

is our categories content on category pages

is the question.

Is it, transclusion only shows the content of the page.

- Category pages do show subcategories.

- Aha.

Maybe- - And then they have pages

in addition to that, but they do,

all the category in the tree shows their subcategories.

- Yeah, alternatively, I mean,

when I put my stuff in for NYCjug,

once you have more than three main things,

it generates a table of contents at the top.

And if you do underscore,

I think it's underscore, underscore,

no T-O-C, all in capital letters,

underscore, underscore, you can get around that.

- Right, but I'm saying I like the table of contents.

- Absolutely, if you like them, you can keep it in,

but you can get rid of it if you want.

- Right, it's just, it look,

the table of contents would look a lot like

your collapsed version of this page,

where it would be up at the top-

- That's true.

- And then all the expanded ones

would be available down below.

- That is true.

So if I did this, you can see the no T-O-C there.

And I will show preview.

Oh, I guess it's not gonna do that for me unless I save it.

So I'll save it.

- Yeah, oh yeah, since it generates the T-O-C,

I guess it doesn't show it to you.

- Yeah, so I'll just test.

Come on, you're in my way, there we go.

(computer beeping)

- That doesn't look great.

What level are the-

- That's my next point is that I bet you

I'm down a level too low.

- Might be, yeah.

- Oh no, the reason it isn't

is because even though you're seeing these-

- It's in tables.

- They're in tables, yeah.

- Yeah.

- So they're not actually headings.

I guess I could go make them headings

and then they would show up.

- Yeah, well, I mean, that's my preference.

Not everyone, your mileage may vary.

- Yeah, and I think it's just a difference.

I could put the tables under a heading

and then it would show up that way.

And it would have the benefit of,

it would have the benefit of having the T-O-C.

And then if all these were expanded as they were before,

you'd have both.

So that probably is the most friendly way to go

until you get into groups would have really,

well, even with groups that are really large,

if you have your T-O-C, that solves that problem.

So I think I'll explore that next.

I thought I was done with community,

but of course, no, never done with community.

- Yeah.

Anyway, I kind of like the reduced size of it

and then being able to select it,

you get the same benefit table of contents.

So thank you for that, Devin, that's great.

- Yeah, sure.

- It looks like it'll work.

And then I'll also take a look at transclusions

and see what might be done there

just to find out more about them.

I haven't used them before, so we'll learn something.

- Well, how are you handling,

you talked a little bit, I think,

you referred obliquely to the multiple parent problem.

Could you talk a little more

about how you're thinking about that?

- Multiple parent problem being that more than one,

each page can have more than one category, right?

- Right, and that's interesting.

If you're trying to find something, that may be interesting.

- Right, so my solution to that was,

and I think Skip was the first one

that came up with it as a question.

And what I did is I started,

I had been hiding the category pages

and I've started unhiding them, so now they show up.

- By category pages, you mean parent category links?

- So this has still got a hidden category of home.

- Right.

- But if I go to, well, I'm just trying to think

of an example where it'll show up.

Maybe you wanna...

Oh, okay, I think you can do it here.

So if I go to the bottom of this, it's in user C5.

That's the category it shows up in.

So if I click on user C5, it's gonna take me back

to this page where there's other information.

Does that make sense?

- No, I'm afraid you lost me and I apologize.

- Okay, so I was actually on this page.

- I see.

- And this page is here along with all of these others.

So if I go to any one of these pages,

I'm gonna see user C5.

As it turns out, this is from Will looking at it

from something else, just to say he's checked it out.

But if I'm saying, oh, this is interesting.

I found John Holland.

What is this user's thing?

It'll take me back to here.

And-

- But that's where we came from.

- That's where we came from this time.

But previously when I went to it,

I hadn't been to users before.

- Here's my confusion.

It strikes me that what I should be able to see

is on any given page is a list of parent links.

And if there are multiple parents for a page,

I should see multiple links.

Most of the time I'm only gonna see one,

but I would think I would see multiple ones occasionally.

- So are you thinking like breadcrumbs at the top?

- No, this isn't a navigation phenomenon.

This is a structure phenomenon.

- Right.

- I'm sitting on a page.

That page is referenced by multiple category pages.

I should be able to see links to each of those category pages

on that child page.

- And so taking this as an example,

let's see what else Will had done.

And those are the links to his pages.

- Okay, so what I was looking at,

if you alt back or whatever the right term is.

So that there are two parent category pages,

two stories, John Howland.

- Yes.

- One of them is WG and one of them is users C5.

Is that right?

- Correct.

- Then that is exactly what I want.

- Yeah.

- I think the term categories may be misleading

in this context, but that is what I want.

- Well, I think the misleading thing is

when you look at the users C5,

what I've done here is I've removed all of these here.

Normally, if I hadn't removed them down here,

it would look more like what Will's page looks like.

So if I look at Will's page,

it gives the pages in the category here.

I've taken that out when I go to C5,

but what I've done instead is on that category,

I've put them as a sidebar.

- Yeah, I'm not so worried about where the links are.

- Okay.

- It strikes me as fine.

I really just wanted to be sure that I could back up

to any parent of a page.

- Yeah.

- Okay, perfect.

Thank you.

Sorry for that.

- No, no, it's a good question.

And the only quotes parents you're going to see

are the ones that this page actually has categories of.

So for instance, this is a subcategory

all the way back to the homepage,

but the homepage isn't going to show up here

because this doesn't have the homepage as a category.

- Is the homepage its immediate parent?

- No, community C is the immediate parent.

- Right, well, that makes sense.

- It does, but I'm just saying,

however you link it is what your parents are going to be.

- Right, I'm not talking about listing grandparents

and great-grandparents, just immediate parents.

- Yep. - Okay.

- Yeah, that's how it works, yeah.

- Okay.

- And it was a really good idea.

I mean, there was a discussion about it,

but it was a really good idea.

And we talked about it to Skip last week.

I'm not sure what I was trying to get around

by hiding the categories,

other than the fact that I thought they were noise,

but it's obvious that they're not noise

and they're useful information.

And so as I go through editing, I'm going to unhide them.

And so more and more of them will show up.

But I haven't done that to all of them yet,

but I suppose at some point,

I'm just going to listen to some good music

and just click away and clean them up.

Anyway, that's pretty much all that I,

oh, the other thing, and this isn't to do with the,

I'll just stop sharing.

This isn't to do with the community pages and stuff,

but last week, Raul, you were talking about all the add-ons

that were wanted pages.

What I did is I went into at least down to the level

of one missing link per page.

So I did five down to twos.

And with the add-ons,

I linked them back to the GitHub repositories.

And as soon as you do that, you create that,

I created a page for the wanted page

and just put a link into the GitHub repository.

That wanted page fills all those needs

and they're linked back to the GitHub.

So that's how I resolved those.

And so I took a lot of them out.

Now there's others that it's going to take a while

to try and figure out.

And one that was really interesting

was there's a reference page, it's in phrases,

and it's for Roger Hui, and it's Roger Hui brackets four.

And so reference, it goes nowhere

and it's in permutations.

And I haven't really been able to figure out

where that reference might've gone originally.

But it's that kind of thing that it'll take some work

to find out the context and what it's talking about

and what would be an appropriate page to put in there.

So I guess what I'm saying is I went in

and scooped all the long hanging fruit.

And now it's probably some work

to clean up the rest of them.

But I got rid of a lot of the multiple links.

And that was, I think,

most of what I had to talk about for the wiki.

And I guess I haven't really done much

on the wiki this week.

I have a page that I am partway in editing

and I haven't filled in the blanks.

- Do you have anything that you want to add

on the wiki end of things, Devin?

Actually, and I have to thank you

because one of the things I realized

when I was doing the user groups

is I was going to go in and group

all of the J user group by year.

And I got partway through that.

And then I clicked on your page and thought,

oh no, he's doing all of this.

This is nuts.

I'm not going to do this as well.

So I just put a link to yours

and thank you for doing all that work

because it's fantastic.

- You mean I list the meetings year by year?

- Absolutely.

That's all it's required.

Yeah.

- Mm-hmm.

- Yeah, no, it's a really nice way to do it.

And I would sort of be duplicating it

on that user groups thing.

And there's no reason to do it there.

It just takes up space

and I'm not going to be able to keep up to everything.

So much better idea.

- Yeah, I think the page had been getting really long

and that's what prompted me to do that.

- Yeah.

No, it's really nice.

And a ton of good information there.

Like there's so much in those.

- I'm sitting here with a stack of,

'cause I have a stack of paper copies of all the meetings,

which is useful to reference.

'Cause I mean, I have most of the material

on my hard disk,

but I go back and I was just doing a meeting

and I was missing stuff.

And fortunately I had the links

to the original things that I was referencing

and I was able to rebuild.

So I don't have actually the Word doc

that constituted the pages I printed,

but I was able to sort of rebuild it from the paper copy.

But this one I just hit,

it's like my,

I call it Dye Object Oriented Programming, Dye.

And it's just full of anti-OOP stuff

to the point where it's a thick piece of,

it was hard to staple.

And I'm thinking, this is going to be more work

'cause I could, I do have that,

I could just go dump it,

but then everyone else has to wade through it.

So I need to do some editing and taking the,

'cause what it is is someone started this thread

about why, what's bad with our object-oriented programming.

And then there's this huge thread

of all these people responding,

many of whom are agreeing, a few who are disagreeing.

But I said, okay, this is where an editor should come in.

I should be able to sort of summarize,

okay, 80% of people agreed with this, 20% disagreed.

If the ones who disagreed, here were the reasons they gave.

And then you could go look at them,

put them in an appendix or something

rather than have the,

like 30 pages of stuff that I have right now.

So that's something, 'cause what I did before

was very little work, but this one is more work.

- It sounds like a really interesting read.

I hope you persevere.

- Oh yeah, well, I basically looked through

the year by year thing and you can see

some years only have like three entries,

but I've been averaging like probably 10 meetings a year.

So that means there's a bunch of ones that aren't there.

So I basically have been going through

and whatever's one that's smallest

becomes my top priority.

And I go add one or two there

and then pick the next smallest and keep on doing that

with a little bit of priority to more recent years.

- Yeah, I think all those meetings

are just a great resource going back that length of time

because you end up with people like Dan Braun

in there talking and you just don't see Dan around anymore

in the forums, it's great influence.

- Anyway, so I think that kind of wraps up what we're looking

oh, one thing I'll add just business for the wiki.

We won't have a meeting next week, I'll be traveling.

So I won't be able to do a next Thursday.

So the Thursday after that, we'll be back on.

But we, Raul, Ed and I have been kind of working

on a visualization project.

Is there anything you guys want to add?

Is there anything you guys want to talk about in that area?

- I've been lazy.

- I don't only because my strategy for this

is to wait until Raul builds it.

I intend to leech off it for my own purposes.

But step one is Raul builds it.

- I should get back to work on the panel.

I have an important safety note though, since it's winter.

I should do that.

- You have an important safety note?

- We finally got snow after 700 days.

(laughing)

- Sorry, I gotta get to the door, I'll be right back.

- There's a car, there's a cow on my beamer.

That's hilarious.

- Leave it up.

- That's gotta be Photoshopped, eh?

- Probably.

- Doesn't have to be.

- There's not too many cars in that kind of terrain.

I mean, not too many cows in that kind of terrain.

Well, there's plenty of cars in that kind of terrain,

not too many cows in that kind of terrain.

- Yeah, well, I don't think that's it.

I just don't think you'd get a cow to do that.

(laughing)

Like, I don't know.

Like I spent some time--

- I've seen cows do some strange things.

- I know, but they're not that flexible.

And that one looks like it's just lying down.

I'm not sure how it could get up there.

- I don't know.

- They're not good at that stuff.

But yeah, you never know.

I doubt it though.

I just doubt it.

(laughing)

- I've been reading these conflicting things

about whether electric vehicles suffer inordinately

or better than gas vehicles in cold weather.

- Probably depends on the vehicle.

- Do you want the Canadian perspective?

- Yeah, I do.

- Okay, well, I'm gonna go with that.

- Yeah, 'cause you would know.

- Yeah, we've got electric vehicle and we're in Canada.

What you notice, or one thing was,

when we bought a vehicle, we bought with extended range.

And specifically, there was a Kia

and it was made for Northern Climates.

So they were selling these ones to Norway, Sweden, Canada.

And it would be a slightly different model

than what you get in the States, I think.

Other than the Northern States,

you could probably get them that way.

So it was already a little bit more battery capacity.

And you do notice in the cooler weather

that the battery runs down a little quicker,

but mainly because you're running more heaters

and snow tires have more friction.

And that's noticeable as well.

When you change the tires, your range shortens

like by about 10%.

- Well, 'cause I know there is a cold effect

on the batteries themselves.

When you used to buy stuff from like REI,

like something that had a battery in it,

they would give you a rating at 70 and 30 for battery life.

They would give you different ratings

for different temperatures.

- Yeah, and you do notice that.

And then the other thing is, although we haven't noticed it,

we've got an inside garage

and we've got a charger in the garage.

It's slightly cooler in the winter,

but we charge overnight.

So it might take nine hours instead of eight hours

to do a full charge,

but it's 'cause you're doing it overnight,

you never really notice.

And here we don't have a time-based metering.

So there's no advantage to trying to set up

a specific time for charging here.

I'm sure that'll come, but it hasn't arrived yet.

But I would say if you're at the edge of your range

in the summer, you won't make it in the winter.

(laughs)

And I think it's probably,

you're probably running at about,

I would guess 80% on really cold days.

And other than that, I don't know that there's that much.

- Well, if it is 80%,

that doesn't sound like too much of a problem.

- No, no, it's not really that big a deal.

- But there'll be the occasional outlier that's the issue.

- Well, if you bought a vehicle

that was at the edge of the range,

you'll notice that 20% is enough to make a difference.

But this thing I'm thinking about now is,

I went swimming, skiing with a friend of mine

who had a VW Bug up in a park in the interior,

and it went to minus 40.

We were out cross-country skiing.

We came back and we couldn't start the Bug.

Well, the Bug doesn't even have a radiator, right?

It's air cooled.

What had happened was the oil had frozen in the oil pan.

And we had to put a Coleman stove under the oil pan

to heat it up enough for the engine to turn over.

'Cause otherwise it was just like a brick of oil at minus 40.

- Wow.

- So I don't know-

- At least you didn't ignite it.

- That's what I was gonna say,

it sounds like one of those bad ideas.

- Yeah.

- Putting a...

- Sometimes bad ideas are the right idea though.

- Yeah, I mean, we put it on low.

I mean, it's just a Coleman.

So we weren't trying to flame it or anything.

We knew we had to warm it up gradually.

And you wanna warm the whole engine block up

gradually anyway.

But what sounds like a bad idea isn't such a bad idea

when you're 20 kilometers from the lodge.

- Yeah, it's 40 below.

- And your car's not gonna start.

And you're on skis.

I mean, you could ski back in, but that's a long night.

Yeah, yeah.

So it's easier just to put this to...

And it took about, I think it took us about an hour,

just warmed them up and then we turned it over

and bang, we're away.

And it warmed the battery up at the same time.

But the reason I mentioned that is 'cause you don't know

what other parts of the car are gonna have a problem

with really cold temperatures.

And we don't have...

We're here a little bit below freezing today.

And the coldest we got last week was about minus 15 Celsius,

which I think is about 12 degrees Fahrenheit.

That's as cold as we got.

And that's not really cold.

You don't really... - No.

- You know, when you get to minus 40, it's really cool.

Really interesting things start happening with metal.

I remember having a Coleman stove at minus 40

and I went to do something and the whole thing

just shattered and came off.

And it was like, okay, this isn't supposed to happen.

- My mom had a story about that.

When we lived in Colorado and as a child,

she said she came out one day to open the car

and the handle snapped off in her hand.

- Yeah, yeah, stuff gets really brittle,

especially if it's in some kind of a heat cycle.

'Cause I guess the molecules just shift enough

and at really cold temperatures,

metals are no longer malleable.

They become quite glass-like.

But yeah, it's fun.

But I don't, honestly, if I was in a really cold climate,

well, the other thing is I know places

where it's really cold, like Northwest Territories,

they run diesel and they don't even turn the trucks off

to fuel them up.

They just leave them running and fuel them right up

and then drive away.

And whenever they storm, they're in a garage.

They don't, or they're in a block heater,

which is something you don't see much around here.

But when I lived back East for a bit,

you can plug your car in and it actually,

little heater on your car keeps the block warm.

Yeah.

- Mm-hmm.

- But yeah, I don't think it makes a big difference

for electric cars in most situations.

And they've still got amazing torque,

which is really nice if you're driving in snow.

(laughs)

'Cause you just ease on the pedal

and the wheels start turning right away.

You don't have to worry about spinning out all the time.

- Yeah.

- The torque's really good.

- Yeah, I had a roommate in college

who made his own electric car.

It was probably back in the '70s,

but he got a surplus post office Jeep for cheap

and basically just loaded it up with lead acid batteries.

And he only had like a 20 minute range maybe.

- Yeah. - He said he noticed

when you hit a hill, you didn't slow down at all,

but you could see the battery drain.

- Yeah. - Increasing drastically.

- And with lead acid batteries,

you wouldn't have to worry about traction

'cause man, you're putting weight in that thing.

- Yeah, it was probably a heavy little Jeep.

- Yeah.

For the visualization stuff,

the only thing I've come up with

is I've been looking at it and--

- Well, could you back up just a second

and explain what you're visualizing?

- Basically taking a combination

somewhere between the trace facility

and Henry's Dissect utility

where it shows evaluation of adjacent.

I'm trying to, the disadvantage of Dissect,

it puts everything on the screen at once

and that's a lot to absorb.

And I was thinking that a more of an animated thing

that shows a step-by-step process

would be a little bit easier to absorb.

- I like the all on the screen at once part of Dissect

when I'm comparing two similar phrases

and I'm wondering why they behave so differently.

- That's true.

- It doesn't scale very well.

- Anything wrong with it.

I'm just saying that I think there's room

for another approach to a different perspective.

- Definitely.

- The stuff I've been looking at actually,

when I've looked deeper into it,

the things I'm really looking at

is all I'm interested is in tacit.

So if I have a tacit phrase,

'cause I know Ed and Raul,

you've been looking at the direct definition stuff

where you can have multiple Xs and Ys within your sentence.

And I'm not dealing with that at all

from what I'm looking at.

- I don't remember doing it,

doing it multiple Xs and Ys.

I mean, the thing that we're looking at

was how to capture the progression of data

through going through an execution.

And that happens both during the parsing

and in tacit, you also have it,

there's different pieces that it goes through

as part of that.

Right, quite the right terminology to describe it.

- Yeah, the stuff I was seeing,

I shouldn't say Xs and Ys,

other than the fact that I think you were using nouns

and positions where-

- Oh yeah, okay.

- I'm doing a J sentence evaluating

and I'm not looking at doing that.

I'm just looking at isolating a tacit verb

and then I can create,

I can add an X or a Y argument

and then display the tacit verb

based on what I've put in, including no arguments

if I wanna just isolate the tacit verb on its own.

- I guess I'm not quite seeing what you're describing.

- Well, it's essentially what I would do

is I've got the boxed format of a verb display

and say for instance, you had a fork

and you have no arguments.

It's obviously not gonna work,

but what you're gonna end up with is,

you know that middle time is always gonna be dyadic.

So you can say, this is dyadic,

the outsides are indeterminate.

- Oh yeah, at one point we're talking about colorizing

based on position in a train.

- Yeah.

Well, colorizing based on whether it's monadic or dyadic.

- Yeah, valence, valence.

- Yeah, yeah.

- Yeah, those are sort of--

- You can't know whether it's monadic or dyadic

without having the arguments there

because all verbs are both.

- Yeah.

- Sometimes they have an empty definition

for one or the other, but conceptually,

they exist even when they're empty.

- Right, but if you take, for example, a fork,

you know that middle time is gonna be dyadic.

It will always be dyadic.

- It's always gonna use a dyadic definition.

- Absolutely, and you also know that if you've got an at

between two verbs, the leftmost verb

is always gonna be monadic.

- Right, so you can tag some elements

of the verb definition without arguments.

- Yeah.

- As soon as you add an argument,

the state vector collapses and you can say,

oh yeah, this is monadic.

- Exactly.

- And time is monadic and the center is still dyadic.

- Or if you had two arguments come in,

then they'd all become dyadic

and they all reflect that.

- And the arguments also tell you stuff

about the domain of the verbs that you're using.

Lots of the verbs have domains

that aren't necessarily relevant

to the application that you're using it for.

- Yep, exactly.

- You can have factorial of a fractional number,

but lots of people don't ever use that

even if they're using factorial.

- So, Roel, I have the impression

that what you're shooting for

is a faithful representation of the interpreter at work.

- Yes.

- So I've read Henry's description

of the parsing and the interpreting.

And it seems to me that you're looking

for a faithful, possibly animated representation

of that process.

Is that correct?

- Yeah, that seems to me an easier thing to tackle

than getting the editor to colorize the syntax.

- Wow, okay.

That's true, 'cause the editor

can't really colorize the syntax

until it's got an execution record to work with.

'Cause it doesn't really know what names are

until execution time.

Doesn't know if they're nouns or verbs or what.

- Right, in fact, they're verbs until they're executed,

in which case they might change to something else.

- You know, once they get, until they're defined,

they're verbs, an undefined name is a verb.

- Oh, but just parsing won't tell you,

or just scanning, I should say, linting,

will not tell you whether a particular name

is a noun or a verb.

- Not in the general case, although--

- Not in the general case, right.

- In some cases, you can get heuristics

looking close enough.

- Yeah, but it's not something

you would wanna offer any guarantees on.

- Right, right. - Yeah.

- Yeah, but you could find that information out,

because you know it, it's just,

it's not done during the parsing.

- Right, if the editor could say,

here's the names I'm displaying,

tell me what the name classes are,

that would solve that problem.

You just had to, you could batch up and say,

here's a list of names, give me a list of name classes.

That would work.

- The difficulty I have, not difficulty, that's not fair.

The area that I think that leaves open,

when I reason about an executing J sentence,

I don't, for better or worse,

think in terms of that description of Henry's.

That's not how I think about it.

And what I wonder is,

what would be the incremental effort

of going from what you're imagining,

which is a parser interpreter visualization,

that is faithful to the underlying infrastructure.

What would it take to go from that

to something that looks more like

the way I reason about an executing sentence?

And that is why I'm waiting for you to finish,

so that I can do incremental effort,

I guess is what I'm saying.

- Well, I guess it would help,

I don't know what you visualize.

So it's very- - I know, I know, I know.

And called upon to describe it,

I would probably just stammer.

So there are a lot of unknowns in this.

- Okay, well, give it a shot.

Just take the average, like the plus slash divided tally,

and apply one argument.

It's monadic, that's its valence.

How would you see that progressing through that process?

- Um, one way to think about it,

and I did a couple of PowerPoint slides on this,

that I recognized that they weren't very good,

was an odometer metaphor,

where each, I don't remember the details anymore,

but what you could do is advance the odometer,

advance any dial on the odometer.

- Yeah.

- And advancing a dial was the equivalent

of moving more and more cells into verbs,

where they would be processed.

And if you advanced an odometer dial on the right,

that might change the number of numbers

on the odometer dials to its left,

because the cell might have a different number

of elements in it, conceivably.

So that is how I'd been thinking about it,

and in an ideal world,

you'd be able to watch one cell at a time.

As you advanced odometer wheels,

you'd be able to watch the result filling in.

- Almost like a strict time series, you know, that--

- Yeah, although I think of it as frames.

I'm not sure time is necessarily helpful here,

'cause unless you're trying to do performance tuning,

which doesn't seem like a good application

for something like this.

But yeah, I mean, frames,

the odometer is controlling the frame

that is currently being processed.

And so you should be able to apply odometer dials

to elements of the sentence.

And I said, applying them to verbs.

I don't think that's right.

I think you're actually applying them

to adverbs and conjunctions,

but I haven't really thought it through carefully yet.

But basically what an adverb will do

is change the cells that get fed to a verb, right?

So backslash, for example,

feeds a sequence of cells to a verb to its left.

And the odometer, advancing the odometer dial

for that adverb would advance the cell

that that adverb was feeding to its verb.

- And so each of the components of your sentence

would have an odometer dial, right?

- Yeah, and I don't know quite what I mean

by components in this context.

I'm sure I mean adverbs and conjunctions.

There may be more than that.

Rank is a conjunction.

Implicitly, every verb has a rank.

So the rank conjunction,

whether it's implicit or explicit,

would have an odometer wheel associated with it

'cause rank controls the contents of the cells

that are getting fed to its verb.

- If I'm understanding what you're saying,

and if we're talking about rank,

it wouldn't be necessarily just one position

on the odometer.

It might be a sequence of positions on the odometer.

- Exactly.

- And the thing I'm thinking of rank,

if you're just going with, say, infinite rank,

because if we're talking about a fork,

it's got infinite rank.

You don't even need to worry about rank.

You're just wondering what comes in and what goes out.

- No, a fork doesn't have to have infinite rank.

A fork can have a rank on it that's explicit,

that's not infinite.

- Absolutely.

If you've put an explicit rank on it,

now you've introduced one,

then you've got a point for your odometer.

- Yep.

- Yeah, but I mean,

but if you have infinite rank,

your odometer wheel has only one position.

- Okay, so it doesn't need to be there,

I guess is what I'm saying.

- Well, I don't know,

but the verbs within the fork have rank also.

- Absolutely, yeah.

- So they're going to need,

or their implicit rank conjunction

is going to need an odometer wheel.

- The way I would,

I'm kind of conceptualizing this as each cell,

you know, if we were talking about explicit rank,

you have that frame and cell concept,

each cell in a result is going to have an odometer position.

And there's other things that also have odometer positions

like the creation of a derived verb

would have an odometer position.

- Yeah, I haven't thought that through.

The creation of a derived verb is something

that I would have to struggle with, I suspect.

- Like a fork, if you have your plus slash divided by pound,

when the sentence is being executed,

it's going to create the plus slash

before it creates the complete fork.

Because it needs to have plus slash

as a component of the complete fork.

- Okay.

- It'll actually, you can't really tell the order,

it'll do the plus slash and it'll do the tally.

It needs to do both of those before it does the-

- It needs to create the plus slash though

before it can create the fork.

Because the plus slash is a component of the fork.

- Yes, but I think that you can,

I'm going out on a limb here.

I think you can assume the creation of the fork.

And as part of creating the fork,

you will assign odometer wheels

with various numbers of digits on them

to the implicit rank conjunctions

and to any explicit ranks that may be present.

- Yeah, sure.

I mean, there's a sequence of events

that happens during execution.

- Sure, but-

- That's basically what we're talking about, I think.

- But you can build the whole verb

and then you can execute the verb, right?

- Yep.

- Okay.

So the building the verb part

is something that gets captured in trace.

I don't reason about building the verb

when I'm reasoning about a J sentence.

That may be a deficiency on my part,

but I don't reason about the sequence of events

that goes into building the verb.

The verb just exists for me as I reason about that.

- We should take shortcuts.

That's pretty normal.

That's kind of essential almost.

Once you know something, you don't,

you're hammering your nail.

If you take a hammer and nail,

you're not necessarily thinking

about how you move your fingers

every time you hammer a nail.

- Right, exactly.

(birds chirping)

So that's where I am,

but I don't have the skill to build an interpreter

or a simulator that can let me do that.

So that's why I am following your career with interest.

- I'll try and wrap it up.

- And the area that I was playing around with

is I was trying to go from the atomic representation,

which is for a fork, it starts with a box number three,

which indicates it's a fork,

and then it follows with three components after that.

And what I realized is it's consistent

with all conjunctions.

Every conjunction is in that,

an adverb is in that first box in that description.

So if it's a two, it's a hook,

there'll only be two following.

There's a three, it's a fork and there'll be three.

But as soon as I know it's a fork,

I can tell you what's going on

with the following three components,

whether they're verbs, they'll be verbs,

but whether they're compound verbs or not,

I know those three components.

The center one will be dyadic,

the outside will be monadic.

I can also evaluate those

because all I need to do evaluate them

is to send them back into, well, the AR,

there's, I think it's the four and five,

bang, colon, one, I think,

will take any AR and it'll convert it back to a working verb.

So I go back to the working verb at that level

and I give it the argument it's got

and it give me the result.

So now I've got, I can work my way through the verb

going from the top where I just got the arguments

and it gives me the full result.

Well, execution is gonna do that anyway,

so it's not really useful.

But then I can break it down on each level

until I get to the very end of it.

And at each point, I'll have intermediate results

of the verbs as I go through them.

So that's very much what I'm looking for

or reminiscent of what I think I'm looking for.

- Yeah, it's slightly different than what you're doing,

but it's got echoes of it, I would say,

or rhythms, rhymes, I guess,

is what you might be looking for, yeah.

But the thing that had been holding me up

is I wasn't sure how to convert

from that atomic representation

to the box representation.

And I think I haven't gone through and done it yet.

The work is whenever you hit a conjunction,

then you have to set up rules

or how those following boxes are gonna be worked,

'cause it doesn't know that, right?

It's, you know, the at conjunction,

it means you know your second verb is going to be monadic

and your first verb will depend on what your arguments are.

But you have to sit and wait with that information

to find out what it's gonna be.

All you know is one is monadic.

But if you go to something like,

I'm just trying to think,

something that is not,

well, say for instance, you do the slash.

So it can reduce across with the verb

if that's what it's,

I guess, yeah, I think it's forward slash.

Anyway, so you go plus forward slash in a list,

it'll add the list up.

But if you put an argument on the X side,

now it's gonna work differently.

It's matching up your arguments across.

And so you do have to do calculations

of how to start representing that happening.

- So it seems to me, Bob,

that you're biting off exactly what Rahul is biting off.

- I think he's going a bit-

- He's being a little bit casual about it.

- I think he's actually biting off more than I am.

'Cause I'm only doing tacit.

So I'm not worried about nouns sitting in my,

other than in tacit positions.

- Okay.

In terms of user experience, where do you wanna end up?

- For me, I'm looking right now at something

where you could hover over this representation.

And it would, by hovering over an area,

it would highlight the area of the text

that you were covered as well.

So you're seeing it boxed, but it's also echoing the,

within the text line of what the input tacit is.

It's showing you what area of that is affected by then.

And as you go into different areas,

that area of course is reduced.

So if you just click on the plus of a plus slash,

only the plus is gonna show up.

If you come out one box wider,

you're gonna have the plus slash.

That'll be an adverb that's making a verb.

And then that'll highlight both of them.

So I want that to be able to,

so you can relate what you're seeing boxed to linear.

That's one step of it.

The other step is as you highlight,

it's gonna, without highlighting, without hovering,

you're gonna see color coded and shading

that tells you whether you're dealing with monadic,

dyadic, indeterminate, verbs, adverbs, nouns,

and conjunctions, so that they'll show up

with different colors and different shapes.

So you can identify what you've got.

If you click on a verb, the first time you click,

you're gonna get the result of that verb.

The second time you click, you'll see the Y component,

Y argument if there is one, or there will be one.

You'll see a Y argument.

And if you click again,

you'd see the X argument if there is one.

So you'll see the two arguments for that component

and the result from that component of that verb.

- Which X argument?

- Well, if there is an X argument.

- Assume there is one,

but because we've got rank associated with verbs,

let's say one of your conjunctions is a top.

So a top is going to work on frames,

that are cells that are coming through.

- Carries the rank over, yeah.

- Well, so you've got double a top half, let's say,

let's make it easy.

So you're gonna feed a Y array into that verb,

and you're gonna click on half.

Which of the sequence of Y coordinates

that was fed to half are you going to show?

- The first one.

- But there are 50, why can't I see them all?

- Oh, if you wanted to, you could go through them,

but you will see the first one.

You'll see the whole result.

- Welcome to the world of odometer wheels.

- Yeah, no, I know, I know that part of it,

that part of it is a lot like the odometer wheels for sure.

Yeah, and it's a matter,

and it gets even more complicated

when you get into power conjunctions.

And yeah, yeah.

So there's, I'm looking at trying to,

I haven't got to that point yet,

but that's sort of the next meta level

is to figure out how I can build that

so you can get through that information fairly painlessly.

Right now, what I would say is what I'm looking at doing

is producing the overall result.

Yeah, the rank is, yeah,

I see what you're saying with the rank.

It does, you'd end up with multiple results as well.

- Yeah.

- You'll only end up with one result.

- But you have multiple intermediate results.

- Yes, you could have.

And in that case, what I'm looking at doing there,

and where those would show up

is if you click on an adverb or a conjunction,

because that's where that happens.

- Exactly.

- When you're on a verb, you're gonna have one result,

but when you break it down, you'll have multiple.

My solution there had been to,

if you clicked on a conjunction or an adverb,

you'd get a graphical explanation about what it's doing,

but you don't actually show

what the arguments are at that point,

other than the fact, I think it's reasonable to say,

rather than using Us and Vs,

I would be able to go in and pull the actual verb

that had been used and put them in that place.

So that if I click on a slash and it's a plus,

I'm not gonna see U slash,

I'm gonna see plus slash as what's going on there.

And as soon as I know it's got one argument,

the graphical representation is going to be pluses

between all these noun positions.

- I'd like to invite you to think about the possibility

that the boxed representation might not be adding anything.

If you can color code nouns, verb, well, not nouns,

'cause it's all tacit,

but if you can color code verbs, conjunctions, adverbs,

why not just color code them

in the textual representation of the sentence?

Why not just click on elements of the sentence

to get the same information that you're thinking of getting

by clicking on the boxed version?

And I ask that not to be contrarian,

but because speaking of how I don't reason about a sentence,

I don't reason about it in boxed form.

- Right.

- But I'm gonna throw in here a issue

with your O'Donnell representation

that is kind of related here.

Let's take, if we have the plus slash

divided by pound expression,

and maybe we put it out of rank of one

and we're applying it to an array, a two dimensional array.

There's, so we've got parentheses plus slash,

percent pound, close parentheses, quote one,

and then I dot five five, say.

At some point in there,

you're gonna be executing pound on,

and it's gonna give a result of five.

And actually it's gonna happen several times,

but what's interesting is the outer expression there

is in the process, is in flight,

you know, the rank one expression,

while that's doing it, it's gonna do the inner,

it's gonna do the fork five times for this I dot five five.

And it, so it starts once,

and then the intermediate points in your odometer

start five times and conclude five times

before that start once actually completes.

So there's, it's not just a simple odometer

because these things take time.

Some of those things are much smaller and faster,

and there's a kind of sort of an overlap concept here

that your odometer doesn't quite take into account

is what I'm trying to say.

- We're not hearing yet.

- I'm not sure I entirely followed that,

partly because we just got room service.

So I apologize for that.

Can you give me the sentence again?

- Yeah, let me do a screen share.

- Yeah.

- So I don't have to narrate the entire JSON stuff.

Where's the screen share button?

Here it is.

Where's my screen share button?

It's in there.

Okay.

So I'm gonna, I'm sharing my screen, right?

- Yeah. - Yes.

- Now if I do,

(computer beeping)

something like that.

- Yeah.

- In your odometer sentence,

and you don't, this thing,

this whole expression here starts once.

And then while that's running,

this inner expression here is gonna happen five times.

It's gonna start five times.

It's gonna finish five times

before this outer expression can finish.

- That's fine.

So when your odometer isn't,

if it's a starting odometer,

it's gonna be different from any odometer

in terms of the way the sequence,

things sequence out, I guess, is one way of looking at it.

- I don't think that's a problem.

So as I imagine it,

odometer wheels are associated with conjunctions and adverbs.

So you're, that rank one,

that rank conjunction has an odometer wheel on it.

And there would be five stops on that odometer wheel

'cause you did I.55 and it's rank one.

So every time you advance the odometer wheel,

you're sending a new row into the fork.

Now internally, each of those verbs in the fork

has a rank, so there are odometer wheels associated

with each of those implicit ranks,

implicit rank conjunctions.

And you can leave the outer odometer wheel

on stop number two, let's say.

So that'll be the third row of the input Y argument.

And then you can manipulate the wheels,

the three wheels inside the fork to watch that much way.

You said something like it's more rapid,

it's sort of smaller operations taking place

within the larger operation.

That's the whole point of an odometer

is to be able to capture that behavior.

So I think it works.

- Yeah, and I think where you'd have the odometer

internally for sure, I'm not sure whether you would use it

for the verbs, but I would use it for sure

on that slash, that adverb.

- It's definitely on the adverb.

- Yeah.

- But you don't use it on the verbs,

but you use it on the implicit rank conjunctions

associated with each verb.

- Yeah, yeah.

And to go back to your question about

why do I need the box format?

It's to be able to access the hierarchy

of how that's done.

If I don't have that hierarchy of spatial,

it's really hard to figure out what part

of the sentence you're interested in.

- Well, you could certainly use

the boxed representation internally.

I'm just saying, I don't think it has,

I think it may be not misleading

'cause it's obviously perfectly accurate,

but it doesn't line up with the way

I think about the sentence.

So you could use the box representation

to let you drive the behavior of the textual sentence

as the user clicks on various parts of it.

And as you try to color code it, that's all.

I just don't think it necessarily needs

to be part of the user experience.

That's all I'm saying.

- But I think a big part of the experience

for the user is to be able to move around

and adjust different things.

- Adjust.

- Well, not so much adjust.

You can adjust by entering into the text boxes

that you've got for the tacit and the arguments.

But what you're doing is you're exploring it.

So just by hovering across different areas,

you're highlighting different areas

and seeing how they react to each other.

If you have it flat,

you're not gonna have that ability to see.

- So there's nothing to stop you

from as you hover over the sentence,

drawing brackets that indicate relationships among verbs.

There's nothing to stop you from color coding

various verbs or other components to indicate.

- Okay, so if I took the fork example of average

and you hovered over the pound sign,

are you gonna see brackets or not?

- What do you wanna show about that pound sign?

- Well, I would show the pound sign myself

with the box format.

I'd only be showing what the pound sign does.

It's a verb, it's, you know,

- Fine, shut up.

- Okay, so I would do that.

But then when I move over to,

so how do I, I guess when I hover over the parentheses,

that's when I get the...

- That might be a good way to do it, yeah.

- Yeah, okay.

And then it's, so for instance,

if I had a five character train,

if I hover over the first three, I'm gonna get one fork.

I'm gonna go one further.

- Yeah, what you might do is by default,

when you've got the sentence,

you might draw brackets around,

brackets that indicate forks and hooks.

- Okay, so the way to do that,

actually there is a representation that does that as well.

It's parenthesized.

Yeah, five, six is parenthesized.

So you can automatically do that.

- I wouldn't do it with parentheses

because that changes the sentence that the user typed in.

- No, five, six doesn't.

- Doesn't add to me.

- Well, five, six does add parentheses.

- It doesn't change the meaning of it,

it changes the appearance of it.

- It does change the appearance.

- Don't do that.

- Yeah.

- Draw brackets, draw brackets that encompass

the various collective components of the sentence.

- Okay.

- And brackets can own brackets.

- So I guess if I were to, instead of,

you don't think of these things as boxes,

but if instead I used it parenthetically,

so instead of the box format,

I did the parentheses format because it actually,

it's the same.

It's just a different representation.

- It is the same, but it doesn't look the same.

- Right.

- Well, I think what Ed is talking about

is representing the tree shown by the boxes

with a tree structure on top of it.

- Yes. - Brackets.

- Thank you, Evan, that's a better phrase

than I did, I appreciate that.

- Because you can also represent,

you also have a representation that is a tree structure,

but it's on its side.

- Yeah, exactly. - Like four.

- Yeah.

- Well, that's, I mean, again,

please leave my sentence intact.

- Yeah, yeah, yeah.

- We can do both.

- Honestly, I was going to anyway.

What I was gonna be doing was put my text input,

you're gonna be typing what you type in there,

that was gonna be reflected exactly underneath.

And the reason for that is I can't put SVG

over other components in JQT.

- Oh, Bob, Bob, Bob, Bob, Bob, Bob,

you're being driven by your implementation technology.

- Yes, I am.

- Don't do that, don't do that, please don't do that.

- Well, I have to get something working.

- Yeah, I mean, the problem, I mean, I've done this.

You get a tool that's like a prototyping tool,

it's not a real language,

it's not a programming language,

but it kind of does stuff that's cool.

And you start to use it to implement your vision.

And then you find yourself changing your vision

to adapt to the tool.

And after a while,

there's very little of your original vision left,

you're just sort of a slave to whatever it is

you decided to adopt two months ago.

And that's a terrible place to be.

- Yeah.

- It's happier if you adopt a real language

right from the outset,

and then you can make your vision manifest itself

as you imagined it,

rather than as the tool sort of gradually forced you into it.

- Yeah, that's a good point.

- Taking notes is also good

for navigating those kind of holes.

So you can keep track.

- I'm sorry, what is good for?

- Taking notes, what your goal is,

and some drafts.

- But SVG won't do this,

so what will SVG do?

Oh, okay.

- No, actually it's not an issue with SVG,

it's an issue with JQT.

You can't put components over top of each other,

you know this, right?

- Oh, I always just,

this has been my strategy for decades now.

I get a language,

I find the graphics library,

I find the six or seven primitive graphics commands I need,

and I find how to build a graphics context,

and I do everything on there.

- Yeah.

- So the fact that JQT can't stack components

doesn't impact me.

- Is using an ISI draw or something?

- I'm using an is a graph or is a draw, yeah.

- Right, right.

- Well, I've got to run.

It's good to see you guys again.

- I hope you do, I've got to run too.

- More frequent attendee.

- Yeah, Devin, thanks so much for coming, I appreciate it.

- Yeah, and thanks again for all the stuff you do

with NYCJUG, it's great.

- Yeah, no kidding.

- All right, take care, everybody.

- Okay, bye-bye.

Thank you.