Wiki/Report of Meeting 2024-06-13
Report of Meeting 2024-06-13
Present: Raul Miller and Bob Therriault
Full transcripts of this meeting are now available below on this wiki page.
1) Raul returns and Bob brings him up to speed on the work that has been done on the category template. Bob asked about putting the template into the footer of the document using php. Raul believes that it could be done, but would like to set up a test wiki temporarily, as mistakes in this insertion could be difficult to reverse. LocalSettings.php looks like the place that the insertion would be accommodated. It is easier to ensure that it is done right the first time. Bob says that first he needs to update the content of the category pages so that they are useful to the users when the template is put in. Bob thinks that the insertion would not allow the template to have its current category highlighted. Raul thinks that this could be done for category pages with CSS or Javascript, but for content pages JavaScript would need to be used to scrape the categories on the content page to know what is highlighted. That would definitely requite work with a test wiki to know that it does work. It may or may not be worth the effort and complications that could occur. Nonetheless there is work to do on the category page content.
2) The sidebar would also be updated to redirect the current main page https://code.jsoftware.com/wiki/Main_Page to the new home page https://code.jsoftware.com/wiki/Category:Home with a link to a recreated main page (since the previous one has been redirected) for those who would like to revert to the previous directory.
3) Raul pointed out that there are many pages on the Orphans page https://code.jsoftware.com/wiki/Category:Orphans_R11.1 that should not be. Examples are that essays and debug is sitting in the orphans. Bob thinks that if the directory template on a page is put into Orphans then the page linked on the directory is also placed into Orphans. Bob will look into cleaning this up, either blocking inheritance or removing the directory templates (example https://code.jsoftware.com/wiki/Labs/Navigator) from Orphans. In the meantime Bob has hidden the category Orphans to avoid creating noise on content pages.
4) Raul showed an application that he has been working to show more granularity in the way that J's sentence execution is explained. It is based on the trace application. Challenges are trying to show the rank of verbs as they are interpreted and indentation to show intermediate results. Currently it is in a textual display and a graphic display would be the next step. The trace application also shows the steps but not the shifts that the parser undergoes to match the patterns. This means that it only shows the steps where the parser evaluates and not the internal steps required to reveal the operations of conjunctions such as power.
5) An issue had been brought up that the Download as PDF and Create a Book links on the sidebar are no longer working although the Printable Version is working. (Ed Note: Chris has removed these links from the sidebar until the links catch up with the MediaWiki version).
For access to previous meeting reports https://code.jsoftware.com/wiki/Wiki_Development If you would like to participate in the development of the J wiki please contact us on the J forum and we will get you an invitation to the next J wiki meeting held on Thursdays at 23:00 (UTC).
Transcript
So typically, our meetings haven't been going super long,
which is not a bad thing.
I mean, you sort of get through and move on,
but, or we ended up talking about AI,
'cause that's actually what we end up discussing
for like a half hour after we finished talking about stuff.
But in any case, welcome back.
- Thank you.
- And I have a couple of questions for you,
but first what I'll do is I'll just show you
what I've been up to.
I think this is the easiest way to do it.
And can you see that now?
- I see a wiki category tree template page
with several different colors of text
in the index category stuff in the center.
- And each entry is in fact,
this is all the categories right now that we're using.
Later, if we decide to put them back in again,
there will be developer categories,
but I've just taken those out for now.
So we've got newcomers, community reference wiki,
and then the home and notices categories.
And these links are all linkable.
So they'll take you back and forth.
And originally when I did it,
this is a template of course, this is titled.
Originally when I did it, I was using,
I was putting this on pages,
actually putting in the content of the page.
And so when I would enter it,
I could then send a signal back
and it would be able to tell me which category I was in,
which is kind of cool.
So for example, if I do the,
I think I did the newcomers, let's see.
Yeah, so we've got newcomers, all that stuff,
but I was able to highlight newcomers
'cause that's the category you're in.
Now, this probably, no, this is where you come into it.
As long as I'm putting it into content
and putting it in the category page,
I can do that 'cause I know what page I'm sending it from.
But when I started to think about it,
what makes more sense is to actually drop this template
into the footer of the document,
which would be outside the content.
Because the advantages that would have,
instead of having these attached pages to this category,
this in the footer would be down here.
It would be down, I guess it would be down in here.
- And you're saying when you try that it doesn't work?
- I have not tried it yet.
'Cause I think we have to go,
I have to end up doing PHP and inserting it that way.
'Cause I think it's similar to how you had,
when you originally had the setup of entering the map
and the search, and I'm trying to think
of what else we had up there.
We had three things, I can't remember.
Oh, maybe it was homepage, I don't remember.
That was gonna be on each page
and it was gonna show up in this area up in here.
But if we put it in the footer,
I think it shows up on all the pages, which is what we want.
The thing is, if I wanted to put this,
I'd have to go in to put this template
in on every single page in content.
And there's two issues with what one is,
that's an awful lot of pages to go in and do that with.
The second thing, the reason is,
is I think if it's in the actual content, not in the footer,
it ends up messing up Ed's JViewer.
Because suddenly it starts to show up in content
all over the place.
- Right.
Although he could change the viewer to strip it out,
but yeah, that's not ideal.
It's definitely the brute force way of doing things.
Yeah, I'm looking at the media wiki documentation
and it does indeed look like local settings.php,
which is, it's PHP, but it's a config file,
is where you set up what is in the footer.
But I haven't fully read all of this.
There's other stuff I would read up.
This will be a study project for next week, let's say.
- Oh, no worries.
'Cause, okay, so that's perfect.
'Cause what I initially started to do
was put these into the content on each page
until I realized that it's quite possible
if it goes into the footer,
that this would end up duplicating.
So I'm not putting this in any of the other content pages.
- This would also be a perfect thing for a test wiki
to, if Chris or one of us could spin up a test wiki.
There's no reason to say we couldn't.
I mean, we just haven't tried enough.
- Yeah, I suppose.
But the reason I'm saying there's no rush
is because all of these pages, I'm just thinking,
I think I did all these ones.
So yeah.
So what I've done with all these pages
is I've got something up in the content,
and then below is the pages that are attached.
And then below that will be that map in the footer.
Now, the thing is, when I go to put that map in the footer,
it's no longer gonna have highlighted categories
because it doesn't know what page I'm on.
Has no idea.
The template itself would not,
but at the time of rendering, that information is available.
It's part of the URL.
So with just a small bit of either CSS or JavaScript work,
I bet you could do that.
- Okay, but you wouldn't be,
well, unless you could do it and then like it.
- Because what we'd be looking for is a A with an href,
which is equal to the base part of the URL
without any hash stuff on it,
on the end of the navigation within page.
Those match, that's the,
which is something that I think CSS could do,
and I'm pretty sure JavaScript could do.
I know JavaScript could do.
Then you go up a couple of levels in the DOM hierarchy
and put the border around that spot.
- Okay, so you don't even in that case use the template.
Like what I, originally the way I was doing it
was I use it, it was using IDs in the template.
- Yeah, well, you'd use a template to deliver the content
because that way you can enhance it
without having to go edit the PHP file every time.
But in terms of the highlighting,
the highlighting would not, would be a different mechanism
than I guess what you're currently doing.
- Right, okay, yeah.
No, if that could be done that way, that would be great.
Then the only challenge, well,
the only challenge that shows up then
is for most of the content,
that would work well for the category pages.
For the content pages,
they could be in multiple categories.
- Right, and I guess for that,
you'd have to, that would definitely need JavaScript,
and you'd have to look for categories on the page
and match them up to categories in the footer.
And that would be, that'd be more of a,
that'd be not a next week part two,
that'd be a lot longer.
And also, is that really advisable to do it that way?
- Well, that's the thing, is whether, I mean,
I would think--
- I mean, it's redundant information.
You have it elsewhere on the page.
It's a programming project that would,
in principle, have to be maintained
across media wiki upgrades.
And is it a value to the user?
It would be fun for a few days, but is it worth it?
I don't know.
- I don't think it actually is,
'cause as you point out, when I make these categories
visible as I'm going in and doing these headers,
I'm making these categories visible now.
It means that you know you're on the page.
Yeah, I just don't see it as being,
it was useful when I was using it in content,
'cause that was being able to identify category pages.
But when I was putting it into content,
I couldn't actually put it below these pages here.
This section here is generated,
and so I don't have a way of inserting after this.
I can put something in here, but nothing down here.
So this whole part is generated.
The nice thing is, 'cause I really want the map
to be after all this information,
the footer puts it down here where I want it.
- This is definitely a test wiki
as an intermediate stage, I think.
'Cause otherwise we're gonna be putting it
on the live wiki and saying, does this work?
And it's gonna be a serious configuration change
to try different things out.
- Okay, well, and the other thing as I was saying
is if I go back,
some of these pages I've already done,
but in order to actually do this,
as soon as these show up on the main page,
they all have to have something useful in them.
So for instance, if I click on sockets here,
this is what I've got.
I've just got this blank,
well, a boiler plate basically saying,
this is a category page.
But what I wanted to have happen is what I was doing
or have done before here.
If I go to say add-ons,
no, actually that's not a good one
because there was already information on add-ons.
Video, nope, is that forward right to the video page?
Let's see, scripts I think is one.
There you go.
What I've done now is I've put somewhat useful information
in this box, even though this is a scripts category page.
And I would want to have done that with all the categories.
So at least there's something there
and there are links below that are useful.
And then the content pages I'm not so worried about
because the template will show up below the content page.
The content page is just a content page.
If you get down to the bottom, it gives you access to it.
So really by the time this actually goes into effect
is really about the time when we're really to make switch
over to looking at the new wiki.
So there's probably multiple weeks
before that's able to happen right now.
- Yeah, okay.
- And at the same time,
I would probably end up changing the sidebar
so that it's no longer going to the old main pages
and stuff, it'll go to the homepage.
And then on the homepage itself, let's see.
I think probably what I will do
is this will become the main page.
And what I may do is put a link somewhere on here
that takes you back to the old main page.
So people who don't really wanna see this,
if they're directed to this page,
at least this will direct them back.
- This sounds involved enough
that I would be wanting to take notes
and have a little plan
and make sure I didn't forget something
that I thought of earlier.
- Okay.
- I mean, I haven't taken notes, but I think I should.
- You know what?
I'm recording this.
- Oh, okay.
There you go.
- I'm glad I thought of that.
- I can send you the video.
(laughs)
I can send you the video.
But just thinking this through,
I was thinking I could put a link to the main page,
but if I'm forwarding the main page,
I'd have to, I guess I could recreate the main page
so that once forwarding,
and then I go to a new main page
that would be effectively the same.
- You can form main pages.
- Yeah.
But that's down the road a bit.
- Yeah, so that's what we've done.
And that's what we're looking to do.
And--
- I've got a couple of things.
- Yeah.
- If you're getting into ending up,
close to ending up,
well, there are two things that I wanted to bring up.
- Okay.
- One of them is that I have,
I stumbled over a number of pages in the category,
orphans are 11.1.
- Yep.
- And they don't,
and a lot of these do not seem like orphan pages
because they have links to various things.
- Okay.
- And they're in a debug.
Like everything that's in debug seems to be orphaned,
orphans, even though they definitely link to each other
and they're in a debug category,
which, or a debug hierarchy,
which maybe isn't linked somewhere,
but it seems like only the top level should be orphaned
if rather than everything underneath it.
Let me just check your, let's see.
- That's a good question.
'Cause I'm just looking at these
and I look at all those essays sitting in there.
- Yeah, debug is under guides.
- Oh yeah, yeah.
- And so it's kind of odd that something
that a page hierarchy linked off of guides is all orphan.
- Okay, you know what I think it is?
And I'm just going by memory,
but I think when you,
like the main,
the link that Chris was using as a template
for his menus at the top,
I believe if you put that into orphans,
then it takes all its links and it puts them into orphans.
- So there's one page somewhere that if you take it out,
it'll fix it.
- It'll disappear.
So I did end up taking,
I found one and I took it out and that happened.
So I'm thinking that's possibly what it is,
especially with guides.
- 'Cause to me, none of these guides really are orphans.
They all come from somewhere,
but there may be one main menu one
that was a template that links to all of them.
And then that just did,
and there is a way to take that out.
I can't remember what it is,
but I think it's some kind of a keyword that you put in
and it will keep that from happening.
It won't ripple through, it stops at the main one.
- So it might be able to search for it
in the JView or something.
- Yeah, yeah.
Or they're sitting right here.
Like I've got them all right here.
- Okay.
- And that probably is just a matter.
In fact, if I was to go to one of these,
my guess is there's more than one category in each one.
And it's just a matter of diving in
and taking out the orphan category if it no longer applies.
- Makes sense.
I didn't know what that makes sense.
- Yeah, I will look at that though,
'cause this is definitely way too many.
And this is one of the other drawbacks
to this kind of a thing is we're showing 200 pages
'cause that's how many you can show in a category.
I don't really wanna show 506 anyway,
but you might have categories
where there's a tremendous number of pages linked to it.
- Now is orphans the same thing as orphans R11?
- This is orphans R11.1, yeah.
- I'm not, oh, it is, okay, yeah, I see.
- Yeah, yeah, yeah.
I just went to that template
and clicked on it to get to there.
So that just takes me into everything that is linked to it.
And there's a ton of stuff, as you can see, linked to it.
- Yeah.
- Some of which I don't know why.
Like I really don't know why the front cover of J4C
would be in orphans because I know it's already under books.
- Yeah, this should maybe go into a hidden category
until it, if it takes its sense of work.
- And it actually is in a hidden category right now.
- Well, then why am I seeing links to it on pages?
Maybe the pages, when I do a search for category
and just regular orphans R11,
just regular top right-hand page of the search,
I get a very different,
oh, I see, it's just that I have an error screen, that's all.
- Okay. - Nevermind, nevermind.
- Okay. - I thought it was less,
but it actually is, I just had to scroll down.
- Yeah, but there is work to be done here
for orphans for sure.
- Well, I'm also wondering why if I go to the debug page,
I think it was debug,
I'm just gonna check this.
- Oh, I'm on media wiki somehow.
- Oh no, actually, you know what?
This is not a hidden category.
- That's what I was thinking, this was not.
I'm seeing it down there in the categories on,
if I wiki debug.
- Is that right for hidden cat, I think?
- I don't know.
- The invocation?
- Yeah, I'd have to look that up myself.
- Okay. - I just do a Google search,
media wiki and then the hidden cat.
- Yeah, I'll try one of these other guys
and see if there's, that's something else.
Main page.
- Yeah, you add the double underbar hidden cat,
double underbar to the category page
and that's what's gonna be hidden.
- Okay.
Yeah, that's what I put in here.
So I can put that in.
(mouse clicking)
I'm not doing anything goofy, fine.
- Oh, that's interesting, what did it do there?
- Edit from my side.
When I look at the edit the page, I see hidden cat there.
So it's now, your edit has been made.
- Okay.
- So now if I reload this page
and it is now hidden when I go to the debug page.
- Okay.
- Reload your page.
- So, phase one complete.
- Yep, it is hidden.
I don't know why it jumped back like that on me, that's odd.
- Sometimes. - Yeah.
- One of those things where software is smarter
than it's supposed to be and smarter than the user
and knows what you really want it done,
even though you didn't know that.
- I'm just saying though,
software doesn't have to work real hard
to be smarter than the user in this case.
- What was the second thing you had?
- Oh, so the second thing was actually one thing
I wanted to consult with Ed on, but let me--
- Share screen?
- Share screen, yeah.
There is, let's just, share screen, share.
So, this is something that I've been talking about earlier.
I was talking about, basically what I've done
is I've changed, I've made a modified version of trace
where if there's a compound verb being evaluated
or hypothetically a compound adverb
or conjunction, but I don't know how that could happen,
what it will do is it will show the steps
in evaluating the verb, evaluating that verb.
Now, it's not quite as nice as I would like to be
because I'm using J to implement,
you know, J's interpreter doing the intermediate steps
and if it's a rank zero verbs,
get executed at rank zero, I've wrapped the verbs.
So, you know, if I'm doing it here,
like I'm doing prime twice of iota two.
And so I do P of zero and P of one, so that's iota two.
And that gives me two and three,
and then P of two and P of three gives a five, seven.
So, you know, a person has to do a little bit of thinking
to piece it together to go back to see
that it's this verb being applied to this argument.
But you can see that it is there.
Also, I've changed the convention and trace,
I think it was all vertically aligned,
but here because of the intermediate garbage
I'm throwing in there, I decided it makes more sense
to make it more interpreter-like.
Yeah, so free space indent for the arguments,
although they're separated out on different lines
and unindented for the results.
And I follow that convention for the stuff I've inserted.
And I think we did from a discord
where we're doing the two-sum.
- Yep.
That's very cool, yeah.
- So I wanted to check in with Ed on this
because it relates to a GitHub repository
that he's been hosting for me,
but it's a completely restructuring of it.
So I wanted to kind of get his perspective
on how I should go about committing these changes.
And I haven't really published this anywhere yet.
There is, it needs testing.
So far it's alpha test quality
'cause I'm the only person that's been exposed to it.
- Yeah.
- And there's things like interface things
'cause I'm using the same trace verb
that the existing J trace feature uses,
but I am putting it in a different locale
so that it shouldn't be too painful
to switch back and forth between them.
And you just load the one script or load the other script.
I'm not sure if that's the best approach either.
So anyways, lots of little possibilities here
that I've been thinking about and wanting to-
- And I think one of the things he was talking about
in terms of interface would be taking the information
which you're producing right now in a text.
And I think he was talking about having it
in some kind of a thumb wheel kind of an idea
where you could roll down, see the different values.
That was something actually I was proposing.
He was proposing that I step back and do it this way first
because he thought that's a much bigger project.
And now to do what I was thinking about,
like if I limit to just this kind of thing,
it becomes much easier.
If I introduce a rate of time presentation,
then it becomes more complex
'cause I have to re-implement rank
so that I don't lose that coherence.
You know, here it's step-by-step.
I'm pulling it out of the time stream.
Recording this, that it'd be forward and backwards
where the site was, that was an interface possibility
that I was thinking of doing.
And it's probably the most ambitious part of my proposal.
The other thing I wanted to do
and that's not showing up here in JParser,
it's basically a shift-reduce parser.
And these are the reduction steps,
but I'm not showing any of the shift steps.
There's a queuing process that goes on and there's a stack.
And the idea of animating it
was so that I could bring those under the screen
and show those happening as well
to help orient the user just to,
why is it that the first thing that happens here is this
before any of this or up here.
Why does this plus reduce happen before?
- Right.
- Well, in this case, it doesn't,
but it's different things going on in different places.
- And that's because it's got, it can be up to four items.
Is it in its stack before it has recognition?
- Yeah, it pushes up onto the stack.
It matches against the top four.
And if nothing matches,
it will push more onto the stack and match the top four.
It can go all the way over to the left
and you can have the whole stack contain your sentence.
And then it's effectively left to right at that point.
It's looking for like a conjunction or an adverb
or an equal sign or a parenthesis
or something that forces the leftmost part
of that four element stack to get used.
And if that doesn't happen,
it's gonna keep going for look ahead up to a certain point.
If it sees like a verb,
if there's two verbs in a noun,
it knows that the left verb is executable.
It's only certain cases where it'll go real far.
- But what it's doing is it's matching that top four
if there are four each time against the different rules
in order, right?
- Right.
- And so when it matches one of them,
it can pop the stack and return something to you.
- Right, well, it matches one of them.
It takes the pieces that match,
which is two pieces or three pieces.
I don't think there's any four piece patterns.
It takes those and evaluates that step of the expression
and replaces that sequence of pieces,
they're always sequential with the result.
- Right.
- That was computed.
And that's a new thing on the stack.
- I haven't thought this through,
but if I was gonna guess that there was a chance
that there'd be a four piece,
it would be when you hit the marker, the end of the...
- No, even there, that's only three pieces.
You have the thing to the left, which is being assigned to,
you have the equal sign, the equal copula,
equal colon or equal dot.
And you have the value that's being transferred
over to the thing on the left.
It's never four pieces.
- Okay.
- The fourth piece, however, can be an edge,
either the left edge or the right edge or an empty.
You know, at the very end, it's going down to just,
if it doesn't go down to just one thing at the end,
you have a syntax error.
- Right.
- So at the very end, you're gonna have,
it gets pretty sparse.
- Yeah, yeah.
No, I remember taking a good look at trace
when I was looking at this kind of stuff,
'cause it's actually a really neat little program
to step through that.
And it gives you a real strong sense.
When I sort of internalized trace,
it helped me a lot to look at tacit sentences,
because you can almost do it in your head
about where these,
and the order of the rules is super important.
- Right.
But for something like this,
you know, where trace would show,
well, you're taking these things and you're going in
and you form this fork and then magic happens.
- Exactly, it doesn't show anything.
I wanted to get over that hurdle first.
- Yeah, it doesn't show intermediate results.
- It doesn't show step results
that are not the result of,
it only shows results that are the result of a parsing step.
It doesn't show the internals of compound verbs,
which is what I'm showing here.
Each verb I've wrapped, including the compound verbs,
and in the,
well, that's one other thing here is a limitation of this,
is that I'm actually creating names
in the locale that's being evaluated.
And I have to do that,
because if there's any assignments,
these have to be in the locale
to pull out the right stuff, you know, the right names.
Now, maybe that isn't completely necessary.
Maybe it is a way, maybe I'm thinking wrong,
but maybe I only need to,
if I could wrap assignments just themselves,
then they would know what locale they need to be assigned to
and I can get rid of this.
- You've seen the tacit to explicit script, right?
- Yeah, but that only deals with very simple,
like two or three tasks.
If you do something like this,
something, especially like this,
then it's only gonna give you like three intermediate steps
and it's gonna be a compound for the final bit.
- Yeah, but I'm just mentioning that
because I think he's done something similar
with the variables.
- Right.
- He did the same, you know, each step,
he stored the variables to keep them separated out.
- I haven't looked what it does there, I'll take a look.
But the other thing I was gonna do is each of these,
numbers are the IDs and there's an in on the end
if I'm doing the, if the verb, so I have to have an inverse.
And an origin is what it used, what the original verb was.
So Z10 origin is that,
and Z10 is that.
- Gotcha, okay.
- And this does, you know, it's mostly wrapping that
to do all the display stuff that you see here.
- Cool.
- And somewhere in there, it actually computes the,
well, here, it actually computes the,
argument, this is the plus.
- Yeah.
- And so it's computation.
And of course, every verb has to have an inverse,
it's gonna have an inverse.
So it's that.
- Wow, that's neat.
That's, I think that's a neat approach.
The way I've been pursuing some of that is to use the atomic,
trying to think of what the term is, it's AR,
Atomic Representation.
And going back to use that as a way to generate
those intermediate steps.
But the way I've been doing it is I,
I'm only generating at the point there's a verb,
I don't do generation at the point there's a conjunction.
- Yeah, I do, I wrap, I'll show you the code.
Actually, here's the docs on it.
I have wrap A, which wraps anything.
And I got a one, two and three for adverbs,
conjunctions and verbs.
- Right.
- And I've actually changed this,
I've deleted some things that I have,
and I've created some new names
that haven't documented the new names.
Each wrapper, there's a filler.
That's the tip, that's a template.
- Yep.
- That and all the capital things get filled in with blanks.
- Right.
- So here, here my, like do locale becomes,
that's for, that's for a conjunction.
I have to look around there.
- Yeah.
- Z two, which, how about Z two?
Yeah, that's an adverb.
- Yeah.
- So I can do this, I have do base
is corresponding to do locale here.
- Yep.
- I basically look for this and replace it
with underbar and then the base is the argument
and underbar.
- Yeah, that's neat.
So what you've done is you've created a templates
for the different parts of speech.
- Yeah.
- And then when you actually invoke them,
you just send an argument saying,
this is what it is in particular
and it'll generate it based on the template.
- Right, when I'm, is it invoking or is it evoking?
Yeah, probably, I don't know.
This is the wrapping stage.
- Yeah.
- Which is this, where I, you know,
just basically do this stuff together.
And then there's the execution stage
where this thing is actually the part,
effectively acts as the part of speech that it's replacing.
So Z 14 is, oops, Z 14 is this.
And Z 14, what it represents is,
I guess that's another instance of tilde.
Now I don't bother caching.
Maybe I should, I don't know.
Hypothetically, if, you know, if I'm using the same,
if I have three classes in a sentence,
I create three separate wrappers,
even though that's not really necessary.
- Gotcha.
- It would probably be more efficient
and comprehensible if I did,
but I haven't thought that far ahead at this point.
There's such an optimization, I guess.
- Yeah, and I honestly, in terms of most tacit sentences,
I don't think-- - It's not a big deal.
- I was gonna say, the computer's gonna be working
through it so much faster for any length of sentence
that you generate, unless you're Pepe, you know,
and you're generating the huge, long things,
you know, programmatically,
in which case maybe then you do need that,
but I don't think anything human generated
is gonna require that for speed.
- Yeah, no, it's not for speed,
it's more for comprehensibility.
There'd be fewer names to navigate
when you're debugging it and that sort of thing.
- Yeah, that's true.
Although I think if you had,
if you did a hash table and had them all pointing back to,
your debugging might be more difficult as well.
- It would just be two arrays, one of the--
- A lookup table, basically.
- One of the original values, you know, this thing here,
and the other would be the ID.
And in fact, the ID could just be an index,
so it wouldn't even need to be that,
just be a one list, which is,
which tokens have been parsed so far,
and I reuse the ID if it's been done already.
Pretty simple.
- And then how do nouns fit into that?
There'll be arguments,
but there's cases where you end up putting nouns,
say on the left side of a fork, right?
- Here's actually what happens with nouns.
This is the wrap anything.
- Yeah.
- And what this does is it takes the value
and assigns it to a name.
- Yep.
- And it gets to determine the name class.
And that's this thing here.
- Mm-hmm.
- So what it does is it checks if the verb is this one.
- Cap, yeah.
- And in that case, I give it a special value,
which is minus three,
because I don't want to wrap that one,
'cause it'll never work.
- Yeah.
- And then I do a try catch
to see if I can assign this thing in a sentence.
And if I can assign a sentence,
I'm gonna be the NC of that name.
- That's right.
- And if I fail, a minus two,
because I couldn't, you know,
it's like left parenthesis or an equal sign, something like that.
- I'm using exactly the same format in Jig,
except I don't think mine's as clear as yours is.
- And down here, depending on what name class it is,
I either wrap it or don't.
And nouns, since they're not one of these three,
don't get wrapped.
- Yeah.
And I can't remember, what did you set the cap to?
It was another--
- Cap is minus three.
- It would go through as well, yeah, yeah, yeah.
- Yeah, it does not get wrapped.
- Yeah.
- There's no point in wrapping a cap,
because every time you evaluate a cap, you get an error.
- Yeah.
And it's positioned in a fork.
It doesn't need to be evaluated.
- Right, I mean, if you try,
I tried wrapping a sentence with a cap fork,
and of course it blew up, which is why I had to add that.
- Yeah, yeah.
Well, that is very cool.
You know, the other thing is,
from what I remember from trace,
it's already got,
one of the things you can do with it is trace,
but then the other thing you can do with it
is parentheses, isn't it?
I mean, I took the original trace code,
ripped parts of it out,
and replaced it with my wrapper stuff,
and it's basically, in that space, it's still the same code.
- Yeah, but what I'm saying is,
I think like your execute EP there,
that's left over from the parentheses version.
Like it's already got two functions in it within trace.
- Right, right.
And the parentheses version, I left alone,
it doesn't, my changes have no effect on that,
and it's still there.
- But I'm guessing what I'm wondering is,
whether or not you could incorporate your trace into this,
and just have a different argument that you'd put with it.
- Oh, I see.
I need to come up with a name for it besides trace.
- No, I-- - Ztrace maybe?
- No, but isn't it the X,
when you put in trace,
it works off the X argument, doesn't it?
- When I say trace, is this verb here?
And--
- Oh, I see, okay.
So yes, you're right.
You need to come up with trace.
If one's trace T and the other's trace P,
you'd have to come up with trace D for diagram,
or Z, yeah, whatever you wanna do.
- I've been using Z a lot here.
- Yeah.
But the original trace that you've put in,
if you give it a right argument or left argument,
that's how you determine whether it's gonna do parentheses
or the trace for you.
I think that's in the original code.
- Yeah, I'm kind of ignoring the X argument here.
I didn't even--
- Yeah, yeah, no, I know, but that's what I'm saying.
- I've never found a use case for it,
and I didn't really understand it.
I should go study that.
- Yeah, but that's what I'm saying.
In the original code,
it may just be a matter of adding your code
to the original code, changing the suffix to trace,
and then giving it the option to go to your code
if you do the right left argument,
that's the correct left argument.
I don't know, just my memory, that's how trace does it,
'cause it's got two things it can do.
And when I first looked at it,
when I was first taking it apart in my head,
it was like, what is all this other stuff?
And then I said, oh, well, it's just,
I'm not sure if anybody ever uses it,
but you can off exactly the same invocation.
You just give it a different left argument
and it will do something different for you.
- Right, I should study that to see,
to A, make sure I understand what it does,
B, make sure that I haven't broken it horribly
in this variant, and then C, to decide if
and how I should merge my code into the main trace code.
- The fact that you still got the trace P
and the parse P as opposed,
I think you'll find it's independent, 'cause what I saw-
- Well, no, it's not, because I've replaced what,
I have ripped out some of the code
that concerns itself with the indent level,
which is what I think is excellent,
the step is- - Oh, okay.
Yes, you're right.
You're probably right.
It's tracking indent level, yeah.
- And I'm handling it completely differently with my own,
you saw the indentation that was happening.
And I'm using it to show indentation in the complex,
in the compound verbs.
- Yeah, you're giving indentation another meaning
that wasn't in the original.
The thing is, when I see the move T and the move P here,
those probably haven't been changed.
- Right, and there's nothing that's saying
that the left argument couldn't be a vector
or become alphanumeric or a complex number
or whatever else, if that makes sense.
But before I can figure out what would make sense,
I have to make sure that I understand the existing pieces
well enough that I can jigsaw and puzzle them together.
- I think in the existing trace,
all they use is the character T or the character P.
- Well, that's not the left argument.
That's the distinction between trace and print.
- But when you call trace,
don't you call it with a left argument of character P?
- No, oh, I don't.
- No, you don't.
No, but what I'm saying is-
- When we call parse,
parse is called with an argument, which is trace or print.
And if you look at parse, what it does,
if it's trace, it sets it up this way.
And if it's parse, it sets it up that way.
- Right, you're right.
- So I could do an additional cover function
and throw an additional if statement here,
if that made sense.
Or I could do something,
I could instead go with modifying execute T
so that it can combine,
if it makes sense to combine my concept indent
with the old concept indent,
I could do it at a lower level.
Instead of making the decision at the top,
at the parse level and doing it there,
I could maybe do it at where the indent is handling
and maybe even do both depending on what,
I think depth might have to do with parentheses depth
or something.
I'd have to go study it before I can even make sure
that I'm talking about it.
- Yeah, I don't remember.
I had thought that might be a way of deciding
how deep you go into your trace,
that it would actually only go a certain number of steps in
and then it would ignore them and then pop back out for you.
But I might be wrong about that.
- It's something of that nature,
but I don't remember the details.
- Yeah, yeah.
No, I don't either, but yeah.
Well, that's very cool.
It's gonna be kicking himself for missing this one.
- He'll still be here next week and I can still ask him.
- He will and actually I can send him the video as well.
- Yeah.
- So he can catch up on it and get some input into it.
That's really cool.
Nice work.
- It's mostly, there's still a few things
that I think I wanted to do different,
but mostly it's just trying to make sure
that I find the problems.
- Yeah.
- Which is in some cases very easy.
- Sometimes they show themselves.
- Yes, frequently they do.
They're very helpful that way.
- The only other thing I've got,
and it came up this week 'cause somebody was asking
if they could get PDFs of the Primer,
was I've noticed that on the actual Wiki pages,
the print this page's PDF is no longer working.
- Yeah, can I back over to you so you can show me?
- So down here, you've got printable version.
I don't think that's been working for a while
because it's dependent on, I think,
or create a book maybe is what it is,
but they seem to be depending on somebody
who's no longer providing that service.
But when you click on download as PDF,
what you get back is book creators undergoing changes, great.
You can download--
- Wait a minute, it works for me.
- Does it?
- Yeah.
- Is that Windows?
- It might be a Windows feature.
- Maybe it's a Windows thing.
- Let me just share my screen again.
No, that's not working.
So if I click down here,
here and share.
So I'm here and I click print.
This is the debug page.
- Yeah.
- I click printable version.
- Okay, what about if you click download as PDF?
- Oh, I was saying the wrong link.
- Well, I didn't try printable version.
I used to do that.
There, you've got the same thing I do.
Okay, so printable version is what you wanna do.
- In that case.
- And so this is something we probably draw
Chris's attention to because he probably knows
about what book creator is.
And if it's something that they're paying money for
or had paid money for, many possibilities.
- Well, yeah, and the other part of it is
when you go down below there's tools in the sidebar
and then below that is when you've got the,
oh, it shows up in printable version.
That's interesting.
When I go look at that page, what have I got?
Oh no, I've got printable version there.
Let's see, let's see what happens there.
I go back to the original page that I was trying to print.
I've got tools as a subsection
and then I've got print export below that.
- Right, and there's also create a book
and create a book also fails.
- Yes, it does.
But what I was trying to chase down was the PDF,
which fails, printable version works fine.
And I can print as a PDF off my Mac.
So as long as you can do that, that solves the problem.
So I'll respond to that guy and say,
that's the way to do it.
But I couldn't even find a way into finding out
unless tool, I think it's toolbox in the sidebar
is like all the tools show up in toolbox,
but in the sidebar where you can edit it,
it just capital toolbox is all you get.
- Oh, one possibility here looking at this,
I don't remember print export being there a few months ago.
So this might be a new feature that's still being deployed.
- It's been there for a while.
'Cause I used it for a number of things
when I first started working on the Wiki.
- Oh, interesting, okay.
- Yeah.
- I was thinking maybe printable version wasn't working
and now it was working because of some other,
some external changes or something.
- I wasn't using printable version.
I was using download as PDF 'cause I just wanted a PDF
and it was working, will be a year ago anyway,
it was working and I didn't care about create a book.
- I just completely blanked on it then.
- Yeah, well, it's down there, right?
And then there was other,
well, then there's the other areas,
page information is another thing under tools
that I was using, but it's still there.
It just, it gives you a lot of information about it.
- Season, stop sharing, just reading.
What is it you do?
Interesting.
I tried, that doesn't even make sense.
I should probably sharing machine
just so you can see what I'm muttering about.
(laughing)
- That's okay, I danced away to my own screen
and then came back here and said,
oh yeah, I guess I, this is kind of uncoordinated.
- Yeah, I'm over here and I got debugging turned on
in my browser and I need to pop this out.
See the option to undock.
- Okay, can you just drag it off the tab?
Like just hook the tab and drag it away?
- I don't know where I can drag it.
- No, well again, I'm in a Mac environment,
but if I hover my mouse over the tab itself,
it says debug jwiki and I just drag it,
it'll make its own, it'll drag it off the.
- This, no, that's not what I want to drag off.
I wanted to drag off just the debugging tools.
- Oh, I see, okay.
- What happens is I click this and it pops up this
and nothing shows up in the network tab,
but I can't see my network tab because it's behind.
- Right.
- And I hit cancel and so there,
and the reason that bothers me is when I look at this,
look at this and this is just,
you know, it's an actual link to a page.
So maybe if I,
interesting, so there used to be a different
implementation of printable version and that,
so this is a peer, this is a, oops,
did,
this is a JavaScript handler that's kicking in here,
which is doing something local on,
you just, it's just.
- Is it grabbing the HTML and then just sending it
to the printer?
- Or invoking a browser command that, you know,
a print feature that's already built into the browser.
- Yeah.
- If I go to,
and then I go for,
and so long as I've used some of this, some of these things,
we've got listeners.
Okay, so click.
So presumably if I went into here,
here we go.
- Yep.
- Unclick print window dot print.
So that's what is happening when I click printable version.
It's just doing window dot print.
- Yeah, which goes back to your operating system
and says, oh, you want to print this?
This is how you.
- Well, it goes to the browser.
It says to the browser and then the browser does it's,
it's rendering the page in a format that's printable.
- Printable, yeah.
- Maybe this, just we can see.
Doesn't have the nav on it.
So there's some, you know, some markup related features
in maybe CSS saying what stuff's printable
and which stuff isn't.
I haven't looked at that very closely,
but it apparently exists.
- Hmm, I'll take a look at that for the primer as well.
'Cause of course there's links in the primer.
And if I tell that guy that this will work
and suddenly all the links disappear,
then that's not the best.
But again, if it's printable, then.
- Yeah, it's intended to be a reference work.
It's not intended to, to.
- Be a document that, yeah.
- Not be a part of, not intended to be a wiki.
It's no longer editable.
It's no longer linking to the categories.
You know, it's not a server anymore.
- Well, I'm guessing he wanted to get access to it offline.
So, you know, and there's nothing wrong with that,
but it just, when I first did that, print as PDF,
suddenly that blew up.
I went, oh, okay, that's different.
And then it gave me the information
about the book creation.
You're right, I'll let Chris know about that
so that he's aware.
But I don't even know where that's coming in from.
As I said, I just see toolbox and there's nothing else.
And I don't even see anything involving print.
So I don't, maybe it's part of toolboxes
is the print facility.
- Yeah, it's quite probable that the wiki itself
has marked off, you know, there's a CSS meta selector
for printable content.
And quite possibly that's, if we looked at the CSS
that the wiki was generating,
the content well has that and nothing else does,
or maybe it, you know, the stuff's marked,
it's not printable or something like that.
There's mechanisms that I, they have vague memories of
that I think could be in play here.
- And then they would go and insert that
back into the sidebar, I guess.
- Well, I mean, I have the CSS,
but if it says at print printable or at print or whatever,
it's probably just on the content well.
- Okay.
'Cause what the thing that I don't see is on the level
that you define the sidebar,
if you go media wiki colon sidebar,
you end up seeing how you define it
and all they've got is toolbox.
There's nothing about printing,
whether or not printing is involved,
is included in the toolbox, I don't know.
- Yeah, this is.
- And when I did a little bit of research
to find out what toolbox is,
I didn't get anything out of that, so.
- This wouldn't be part of the toolbox,
this would be part of the MW content text style.
But,
or something similar to that.
- Yeah.
There's a, I see a Unicode bitty isolate thing,
which might, I don't know enough.
Maybe this.
- See, this is where I would edit my sidebar.
So of course, all these correspond to these ones here.
- Yeah.
- And then the toolbox is just, I'm guessing this.
- But see, this isn't really about,
I don't know if this is,
the stuff that you have exposed
is only the features that are exposed to you
as being editable.
And if this is a wiki CSS feature
that's not gonna be editable,
then it's not gonna show up in your toolkit.
- It would be in the actual implementation,
they'll go end up putting this into the sidebar
'cause you can't change it, or you can't.
- Right, and,
and,
it might be that,
there's, I mean, if it's, it would be in the CSS.
So if you look at the right CSS page,
there might be something there that,
that, here we go.
At, if you, it's @media.
So that media screen.
And if there's an app,
you need to,
well, this is not, I know what to do.
@media.
Yep, there's an @media print.
If you, if you, if you do an inspect on the page,
or I can just show you here.
I can, okay, I'll stop sharing.
So we see over here,
- Yeah.
- There's these @media declarations.
If I do @media print,
then there's all the CSS for how printing works.
And so anything that's, you know,
(computer chimes)
- So basically it's, it's interpreting what it sees as HTML
and saying, I want this in the print format.
And it looks like it's taking out footers or it's,
it's got a preset for footers and links.
- Some of these, and some stuff is display none
when you're printing.
- Yeah.
So don't put table of contents in, for instance.
- Yeah, there's no table of contents on a print page
because you can't click on a table of contents.
- Yeah, yeah, yeah.
- And there might be, you know, I, I'd have,
I haven't studied this, so I don't know what else there.
- Yeah.
- There's, there's a variety of,
look at @media declarations.
There's six of them in the, in, in this one CSS page.
Of course, you know, the URL isn't,
is a load.php with a bunch of, a bunch of, of parameters,
but it's still CSS.
- Yeah.
- It's a CSS page.
- Yeah.
- It's using PHP to create the CSS essentially, right?
- To, to at least to admit it, it's probably, you know,
pulling it out of various tables and, you know,
SQL tables, something and delivering it as a,
as a parent whole.
There's, there's going to be one for the,
for the manual CSS, and there's going to be some
for this vendor supplied CSS, you know, some for the,
one for the, the theme, you know,
you can select different themes.
That sort of stuff.
- Yeah.
Well, that takes up our hour.
So thanks so much.
And that's great information.
I will continue to work on the category pages
so they start to get towards it.
I'll check in with Chris about those,
the printing and the PDF stuff
to make sure he's aware of it.
And I guess the only thing is if you get a chance,
if you can look and figure out what might work
with the footers and whether or not we need to set up
a temporary server to be able to test it out.
- I think, I think, I definitely think a temporary server
would be advisable because it is changing a PHP config file.
And if you make one mistake in that,
the whole site becomes unavailable
until you fix the mistake.
- Okay.
- And so to minimize downtime and to allow us
the possibility of fat fingering something,
I really like tests, test site for that issue alone.
And the fact that you can also goof around
and try different things and do some experiments on it
is a benefit comes in on top of it.
- Well, in the meantime, I'll continue to work
on updating content in the category pages on the main site.
'Cause that's just, that's sort of sitting there
as a ghost right now anyway.
- Right.
- And for, yep.
- When we get around to doing that switch over,
we'll set up a test server and blast it through
for a week or two and then kick her off.
- Nice.
- Okay.
Thanks so much, Raul, be safe.
- I'll be, I'll put that on my list.
- Did you have a good break from us?
- I had, yeah, I was tooling around California
and I've got a little bit of a tan now.
Yeah, I was visiting family.
Moving off, relaxing.
- Good, good.
- And all of it in not necessarily
the best connectivity areas.
Although it might be it was kind of cute,
I just didn't try.
- Yeah, well, no, that's good.
I fully support that.
- Also, you know, that getting this thing working,
I was just doing a little bit at a time,
but it was over a period of weeks
and it was kind of relaxing to say,
I'm not giving anybody, even talking to anybody about this.
It's just my own little thing I can goof off
and not care.
- It's very cool.
Well done.
- Thanks.
- Okay, bye for now.
- Bye bye.