Wiki/Report of Meeting 2024-01-18
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.