Wiki/Report of Meeting 2023-12-07

From J Wiki
Jump to navigation Jump to search

Report of Meeting 2023-12-07

Present: Ed Gottsman, Raul Miller, and Bob Therriault

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

1) Ed reported that he can now get Skip Cave's answers to Quora in plain text. There is still work to integrate the text into the J Viewer. Ed asked if the time slider for forum posts was used by anyone. Dropping the time slider would free up real estate. Raul said he does not use it. Bob said that he does use to get a full range of forum posts, which is the opposite way of what Ed was expecting. Ed feels that there is ample opportunity to specify the search enough to get most of the hits you want within the 200 that are returned. Ed mentioned that you can also choose the sources that you are searching. Bob feels it is important to let people know that they are getting up to 200 of the possible matches, but that there may be further hits that they are not seeing until they further refine the search. There is also a dropdown that can narrow down the results to a particular forum. Ed will work on the documentation that may be needed by the user to take full advantage of the J Viewer. Ed thought he might try tooltips to guide the user.

2) Ed is still exploring solutions for highlighting in night shift mode. Bob suggested just using the same colored background that might work in either mode. Green would be a neutral option. As another option, increasing the border style might make the action required more obvious. Ed has activated two finger scrolling on Raul's suggestion and it works better. Ed has included the old Vocabulary into the search with the proviso that NuVoc is the current documentation. Bob mentioned that he does often use the Vocabulary for information on Foreign Conjunctions. The search fields labels are now "In order" and "Any order" to make the search word options more evident.

3) Ed is thinking about future enhancements to the Viewer that might include looking at code in which case Dissect https://code.jsoftware.com/wiki/Vocabulary/Dissect would be an interesting addition. If looking at nouns then Jig https://code.jsoftware.com/wiki/Addons/debug/jig might be an add-on to include. Ed asked about the limitations of showing large nouns. Bob said that the views of numbers extends into multiple thousands of elements. Character views may be a little more challenging because each character carries more svg code. Ed wondered about ways to show higher dimensions. Bob said he had patterned his view on the text view with extra blank lines between the dimension breaks. Ed was considering specifying planes and then moving through the planes in three dimensions. Then a discussion on visualizing higher dimensions followed. Ed's goal is to be able to be ready to present viewing options that would be easily available to users of the J Viewer. This may include searching of Locales and Global nouns to provide quick access to information.

4) Bob wondered if there would be a way to have JHS from AWS shown in the J Viewer, possibly using the space for currently used for navigation or display lists of forum posts. This would result in having JHS next to the wiki page to allow experimentation. Ed wondered if since we are in JQt that we might incorporate something like the terminal to allow access to J. (Editors Note: since J is already running in the console then JHS would be able to access the J engine and display within the J Viewer). This would allow cutting and pasting from the wiki page into the J IDE.

5) Bob showed the progress that he had made on the Home https://code.jsoftware.com/wiki/Category:Home and Newcomers https://code.jsoftware.com/wiki/Category:Newcomers_N pages and the removal of the list of bottom links and instead display those links with a category tree display of the links to the side of the content. In the case of Newcomers Essays https://code.jsoftware.com/wiki/Category:Essays_and_Articles_N.7 this allows the body to be an annotated list with a sidebar of a category tree. This is even more useful in Reference https://code.jsoftware.com/wiki/Category:Reference_R where there is a lot of information. Ed asked if the subtree would be shown on the target page accessed from the category page. Bob said it would not because a page might be in a number of categories and you would need to know which category you had arrived from. Bob felt extending the categorization might make this less of an issue. There are 200 element limits to the category tree display and this becomes an issue for pages like NuVoc. Bob will recategorize the large numbers of pages into sub categories. NuVoc's category page https://code.jsoftware.com/wiki/Category:NuVoc_R.1 would be Primitives https://code.jsoftware.com/wiki/Category:Primitives_R.1.1, Foreign Conjunctions https://code.jsoftware.com/wiki/Category:Foreign_Conjunctions_R.1.2, and Ancillary pages https://code.jsoftware.com/wiki/Category:Ancillary_Pages_R.1.3.

6) Raul had some questions about developing a lab for an exploration of regex. This evolved into a discussion of Instructional Design which is included in the transcript if it is of interest.

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

Transcript

So to start off, Ed, what's new with JViewer?

Well, well, gosh.

Let me interrupt the crawl that's going on right now, which is a little challenging.

I guess I'll get to that.

Well, until the break works, I'll talk about what I intend to do next week.

I've gotten to the point where I can actually get plain text answers from Quora.

So I'm getting skip caves, almost a thousand posts in plain text.

That's only part of the problem.

The text is still a little difficult to parse.

But the hard part is over.

I actually had to use a service that uses a headless browser with JavaScript turned on.

And that's the only way to fool Quora into giving you the plain text.

So I'm doing that.

And I would expect that by next week, I'll have Skips posts integrated as a new source.

So GitHub and Rosetta code, the forums and the wiki, and now also Quora, Skips versions, Skips posts to Quora.

The new forum archive is going to go live soon.

I expect to spend some time learning to crawl Google groups.

I have a question.

So there is, I don't know if anybody uses it, because I didn't want to spy on anyone, so I didn't instrument the interface.

But there is a time slider for queries, and it only affects forum posts.

I don't really have reliable dates for anything else.

Obviously, the wiki is subject to bot updates, so there's no meaningful date associated with a wiki page, for example.

So I was just thinking of dropping the time slider entirely, and I have some thoughts on how we could use that real estate.

It also might speed up queries, which would be a good thing to my mind.

But I wanted to float that notion before I actually did it.

So are there any thoughts on dropping the time slider?

I pretty much ignore it most of the time, but I only use things occasionally anyways when I have something going for it.

It's really only there for performance, right?

It's like if it was too slow for something, you'd want it, but -- No, no, it's not only there for performance.

It's there to let you avoid getting hits on posts from 1999.

But if you never use it that way, that's an indication that I can probably safely drop it.

I think it defaults to 2021, so you're not getting any forum posts earlier than 2021 by default.

I do use it, but I use it the opposite way of what you're suggesting.

I use it always to go back.

All right.

I think I'm going to drop it.

So let's just assume that for now, and we'll see how it goes.

You can put the old hits further down the search results if you don't want them in people's face.

You know, that way lives madness, Ro.

Then you're doing two sorts, two conflicting sorts.

Or maybe not, because one of the things that I did with the most recent implementation, which I haven't pushed yet, is I dropped the relevance ranking.

So basically what happens is it just grabs the first 200 hits that it finds in the database.

It doesn't grab all of the hits, which might be thousands, relevance rank them, and then pull the top 200.

It just pulls the first 200 that it finds.

And I feel okay about that, and check my logic here.

Relevance ranking for a bag of English words is meaningful.

If that bag of words occurs close together in a document, it should be ranked higher than if those same words occur widely dispersed in a document.

But if you're searching for "slash," for example, I would say that the first 200 hits are perfectly okay.

There's no sense trying to relevance rank a search for "slash.

" It's meaningless.

And I suspect that most of what people are doing is code searches.

Not always, not by any means always.

But the other thing is the corpus is not really that big, you know, 125, 130,000 documents.

If you can't create a narrow enough search to get the hit within 200, I think that's going to be a fairly rare case.

So I submit this, but I'm certainly prepared to be talked out of it.

Well, I'm kind of thinking if I was to -- if I was actually searching on code, I'd generally search by the bags of words.

But if I was to search on code, I'm going to get 200 hits, and then I'm going to have to further refine my search with bags of words; is that right?

No, you could further refine your search by refining the code.

Okay, yeah.

That would be okay.

But, yes, you could certainly refine it with the bag of words.

Okay, say, for instance, I want to -- I'm looking for a section of code, it's "agenda.

" I know that it's got some predicate that it's going to make its decision on, and I know the final answer, the final verb is going to be a specific verb.

It turns out that if I do this, it's a common verb.

Or maybe I'm not so -- maybe what I'm actually concerned about is just the agenda and plus the last verb, because that's what I'm really looking for.

I'm not worried about what the predicate is, and I don't worry about the other verbs.

I just want that.

So at the point I put that in, I'm going to get the first 200 that it grabs.

Yeah, and it'll be "agenda verb.

" Or actually, yeah, if you go left to right, it'll be "verb agenda.

" Okay, I'm sorry, yes.

Yeah, or "gerund agenda," really, is what it is.

Gerund agenda, yeah, right.

Yeah, yeah, yeah.

And it's possible just with that combination, if I hit a gerund that's quite popular, I'm going to get a lot of them.

Possibly, yeah.

At that point, I guess my choice is do I want to then review what I want to do with a predicate or do I want to go to bags of words?

That's what you're suggesting, though, is that's how I'd do it now.

You might do either.

You might also just look at the 200 that you got, because the answer might, in fact, be in there.

That's entirely possible.

But I've got to keep in mind that I'm only seeing 200 of what's possibly in there.

Right, and also keep in mind that you can pick sources.

That's true.

Yeah, that's true, too.

Yeah, I think the only key thing that occurs to me is to make sure people are aware of that process so that they don't think that they're getting -- they put that in.

Now I got all those answers.

I didn't get what I needed, so they've got another step to do.

That's the only thing.

So I guess the -- I can't actually report how many hits there are because I don't know.

Yeah.

I know there are 200.

There may be 201 or 200 and another 200.

200,000.

Yeah, it could be.

Yeah, exactly.

Yeah, yeah.

Yeah, if you search for dot, there are going to be a lot of hits.

[Laughter] A lot of hits.

I can communicate that there were at least 200 hits.

Yes.

And say no more than that.

All right.

And I think that's a reasonable thing to do.

I think most people who -- you know, if that's explained to them, most people will say, "Yeah, well, of course," and then I'll just winnow it down.

That's no problem.

I'll narrow my search.

Yeah, yeah, that's a reasonable thing.

Yeah.

I should say you can also -- you can also use the result categories that come up.

So you can say that that menu, that drop-down menu that lets you say, "Oh, only show me the ones from J programming," for example.

Yep.

So your control is actually pretty -- it could be pretty good depending on how much you know about where your solution, your answer might be.

And to me, that's not so much an interface issue.

That's more of an education issue for the user.

Yeah, yeah.

All right.

But I don't think that means change the interface.

Oh, technically, the whole point of an interface is to educate the user.

I mean, it's the substitute for -- Touché, yeah.

A user manual.

Yeah.

Yeah, that's absolutely true.

I will think about it.

Yeah.

I take the point that there is some additional communication that needs to be done, and I will focus on that and see what I can do.

I think the nature of the beast, though, is it's a bit of a Swiss Army knife.

And so I think there is some "this is how this can be used" is reasonable.

And I'm not talking about you should say step by step you can use this drop-down this way and this is what each of these does.

What I'm saying is be aware there's a drop-down.

And then from there, let the user use it as they will.

Yeah, I haven't focused at all on tool tips or pop-up tips or anything like that, and maybe that's something I should think about.

Yeah.

Tool tips are certainly not hard to do in JQT.

No.

Like you do them once in the definition, and then they're there.

Yeah, yeah, yeah.

All right.

Let me think about that.

That's good.

I like that.

Let me share my screen.

All right.

And right away we can see the problem that I faced with trying to highlight buttons that are of interest.

So I'm in night shift mode.

Yeah.

I haven't been able to figure out how to figure out if I'm in night shift mode.

And of course it's going to vary across -- it may vary across platforms.

So when there's something of interest, I just put some asterisks up at the beginning.

So I'm out of date on my data.

So I'd like to make this button green, which might work in night shift mode but wouldn't work in day mode when the text is a different color.

There's really -- I don't think there's any good thing I can do.

So right now I'm just doing asterisks.

What would the color be in day mode?

It will be black instead?

That's up to me.

Right.

I can't -- and I don't know what to set it to because I don't know whether I'm in night mode or day mode.

You see the problem?

Yep, I do.

And so in day mode, that background button is white or blue?

What do they use?

It's gray with black text.

Okay.

It's gray with black text in day mode.

So in white mode, it's sort of a darker gray with white text.

Yeah.

And what if you just change the background color to green in either mode?

White text should show -- A shade of green that would look good with black or white text.

Yeah.

That might be doable.

It's odd that -- I mean, night shift mode is supposed to deal with the colors itself.

It's odd that it doesn't, and it's odd that nobody's noticed or nobody's dealt with it that it doesn't.

I'm not sure I understand, Ro.

I'm not disagreeing.

I'm just not sure I understand.

Night shift mode is supposed to change all of the colors on the display to be warmer colors, right?

Or something, yeah.

Yeah, some selection of colors.

And it's odd that the issue of picking colors to work with both day mode and night shift mode hasn't come up.

Oh, it may well have.

I did some poking around.

There's a lot of discussion about QT and day and night mode.

I didn't see anything about picking generic colors.

But you're quite right.

I'm sure the question has come up repeatedly in the past.

And maybe green -- maybe green is the answer.

I will try it and see.

As long as the text is readable, I don't really worry about whether it's attractive.

The other thing I was thinking, because I'm pretty sure night mode or day mode would both accommodate this, is if you use the highlight color of the button.

But that would indicate that the button is being pressed.

And it's not, right?

I don't know if I can manually set it to the highlight color.

I can manually set it to a color, FF00FF, for example.

Yeah.

But I don't think I have access to the current highlight color.

Okay.

But, yeah, all right, let me try -- yeah, go ahead.

Well, the other thing I was thinking is, is it possible just to thicken the outline of the button?

Another thing to think about is if you specify both the foreground and background color, does night shift mode do anything at all?

No, I can override night shift mode.

Because that might be the thing to do for these buttons where night shift mode is causing a problem.

I see.

Just pick a foreground and a text color and just do them irrespective of day or night.

And a background color, yeah.

Yeah, foreground -- I'm sorry, background and text color.

Yeah, all right.

All right, okay.

And that would only affect that button then, right?

That's what you're suggesting.

Yeah, exactly.

Right, right, right.

So in either one, that button would suddenly stand out.

It most certainly would.

Yeah, yeah.

It most certainly would.

Night shift mode is already a bit quirky.

Yeah, but I can just steamroller it.

And for that matter, steamroller day mode.

Yeah, that's reasonable.

Let me try that.

I like that.

That's good.

So the way scrolling has always worked for results is you get a certain number of pages and there are buttons.

And you navigate that way.

And Raul requested two-finger scrolling.

And I did that.

And it seems to work okay.

And the page number buttons update accordingly.

So we're now on page four up to page five.

That's nice.

And so on.

So, Raul, I think you're set.

I quite like it.

I've defaulted to it now.

It took me no time at all.

But I think we're ready to go.

I think it works.

The other thing is that I put the vocabulary in.

And that was a little tricky.

But I included some text sort of by way of explanation and warning.

I don't know if you can read it, but it says "Jay's original vocabulary, though largely superseded by NUVOC, is still valued by many experienced Jay developers.

" And there's not only the vocabulary, but also the dictionary contents.

These are the two pages here.

And the idea is there are still vocabulary fans.

So let's accommodate them.

But let's also warn newcomers off it without actually warning them off it.

So that was the wording that I came up with as sort of a compromise to try to achieve all of those -- both of those goals.

I like the wording.

I use similar wording with the primer.

Because I had the -- the primer, when it was originally written, only had the vocabulary.

So it had to be updated to deal with NUVOC.

But I couldn't ignore the vocabulary.

And that's exactly what I said is -- actually, I said NUVOC is the current -- is the current -- covers the current version of Jay.

But in the past, there's been more information available through the vocabulary in the dictionary.

And these are still valuable.

And I included links to those.

>> I see.

All right.

>> So sort of the inverse of what you did.

But it still works.

Yeah.

>> All right.

>> And, in fact, it's still really important.

Because if you go to foreign conjunctions, the information on the vocabulary is so much better than NUVOC.

>> Really?

>> Oh, yeah.

>> That's interesting.

>> Tons more info there.

>> Interesting.

All right.

>> Now, there are some things that are foreign conjunctions that are not in the old vocabulary because they've since come up.

There's a few new foreign conjunctions that have been introduced.

They're not even in there.

>> Right.

>> So in that sense, NUVOC would be up to date.

But often when I get in to try and do something through NUVOC with foreign conjunctions, I revert to appendix A of the vocabulary because it's just so much better.

>> Oh, interesting.

>> But that's work to be done on NUVOC.

That's not so much an issue.

>> Yeah, for sure.

>> Yeah.

>> I also changed the labels on the search fields to in order and any order.

Henry pointed out -- Henry raised a question about the meaning of my original labels, which I think was a good question.

So I think this captures that any order is a bag and in order is a phrase.

>> And could you put words in the in order?

>> Words in order?

>> Yeah.

>> It's not just words.

It's also arbitrary j glyphs.

>> Right.

But you can put words in.

So in other words, you can do a search in order.

>> Oh, yeah, absolutely.

>> Okay, yeah, no, that's a good way.

>> Yeah, absolutely.

>> Yeah, yeah.

>> Okay.

>> I sort of assumed that that was only for code and the bags was the any order.

>> No, you can search for -- >> You could put Roger in?

Yeah, okay.

Well, that's great.

Yeah, yeah.

And then the last thing, I wanted to float a notion.

Let me stop the share.

And just to be clear about where this is coming from, I'm running out of stuff to do.

So it occurs to me that if -- there are a couple of ifs here.

If you use the viewer as intended, that is, you set up a shortcut in the QT IDE, then the viewer could have ready to hand features that you sort of wish the IDE had.

But it doesn't.

So, for example, dissect.

For example, jig, although I'll talk about that.

The viewer is for looking at documentation, for looking at educational material, for looking at posts.

But it could also be for looking at code, dissect.

It could also be for looking at nouns, jig.

If I get rid of the slider, we've got some real estate to play with, potentially.

That might be kind of interesting.

But I think that is a magnificent beast.

It's more than I want to try to wrap my arms around at this point in my life.

Maybe someday, but not now.

>> It has a whole lab devoted to it.

>> Oh, yes, I know.

And I looked at the code.

The ratio of comments to code is remarkable and wonderful.

And still, it is a very intimidating artifact.

>> But have you looked at the lab for it?

>> No, I haven't.

>> Because I believe there's two labs.

Basically user interface labs to explain how you're doing things and what they mean.

And it's amazing.

>> Oh, no.

The user experience is wonderful.

So I've read up on that and I spent some time poking.

And I get that part.

The implementation is not something I'm ready to wrap my arms around.

Right, exactly.

I spent some time -- I watched the jig videos, for which thank you.

And I'm very impressed, although I think it's too limiting, I'm very impressed with the use of SVG for the interface.

It makes it very polished.

Much more so than anything I could have done using GL.

But I'm struck that if you were faced -- if jig were faced with a thousand by thousand element array, I'm not sure what it would do.

What would it do?

I couldn't tell.

>> It does it.

>> Does it?

>> Yeah.

>> Does it scroll?

How does it do it?

>> It does.

It scrolls.

>> Oh, nifty.

>> Yeah.

In fact, that's one thing -- it is a limitation because it slows it right down.

But it actually -- it's a case where when you -- and I've done this in the past quite often, actually.

When I was debugging, I'd get this long string that was going to be basically HTML that was becoming an SVG.

And there were specific points I needed to know where it was breaking down.

And I would quite often go into jig and look at it as characters.

Because it would show everything, whereas if I was in the usual interface, it cut off wherever I, you know, set.

Yeah, yeah.

And a thousand by a thousand would probably be pushing it.

But certainly anything up to like 30,000 in a string is done.

It can do that, absolutely.

>> Really?

>> Yeah.

>> SVG is remarkable.

>> Yeah, it took a little bit of massaging because you're trying to not have the window on JQT clip off the SVG.

And they don't actually exactly match.

But I got close enough that when I got up into the 30,000s, I wasn't clipping anything off.

And I wasn't extending a long, empty space at the end.

>> All right.

I need to spend some more time with jig.

>> I've got a -- I started making some sketches.

And I've got a vision of a noun browser that I think starts from the same point that you did when you built jig, but I think it winds up in a different place.

>> Okay.

>> So, for example, one of the things that I wanted to be able to do easily was look at n dimensional arrays.

How do you do that?

One dimensional is easy.

Two dimensional is easy.

Three dimensional is, you know, not too bad.

But if you've got six dimensions, what do you do then?

So I spent some time thinking about that.

>> Well, the way -- I'll tell you the way -- well, you know the way I did it is I used the same format as what the text would.

So there's extra spaces between.

And then when you actually hover, it will tell you the number of dimensions you're working with.

And when you go to the individual, not so much in -- if everything is, you know, if it's all contiguous.

So, for instance, if it's all integers or it's all float or it's all complex or it's all characters, I'm just going by memory.

I don't think even with characters I tell you which character you're on.

So it doesn't tell you where you are in that matrix.

But if you actually do it with boxes, it will.

Because as soon as you've got boxes, you've got a structure.

And as soon as you've got a structure, I can tell you the depths and where you are in that structure.

That does show up.

>> If you had a 3 by 4 by 5 by 6 array of integers, what would the manifestation of that be and the navigation be?

>> Well, to start with, it's going to be a bunch of 5 by 6 matrices.

And there's going to be four groups of those.

And then beyond that, there's going to be three other groups of those.

And the way you'll be able to tell the difference is the spacing between.

>> All right.

>> It would be the same as what you would do in any of the interfaces for text.

They just throw an extra space in for every dimension.

So 3 by 4 is easy.

You know, three rows, four columns.

Four 3 by 4, now you've got a space between each 3 by 4 matrix.

Two, four 3 by 4, now you've got an extra space between the two, four 3 by 4s.

Yeah.

>> I was thinking about making it possible to specify any plane and then to move the plane through whatever.

It's easy to imagine with 3, with 4, it becomes -- 4 and 5 and 6, it becomes kind of abstract, but the principle remains the same.

>> Yeah, yeah.

I mean, I'd be really interested.

I didn't spend too much time trying to do that just because I got bogged down and I wanted to get something out.

And so -- and then I looked at what -- the thing -- honestly, the thing I really appreciated in the text version of how Jay does things is how economical it is.

It's just -- it's really, really good that way.

>> No, clearly somebody thought really hard about presenting n dimensional arrays in a transcript.

That's definitely true.

But we don't -- we don't have to limit ourselves to a transcript anymore.

>> Yeah, yeah.

>> We can do other things.

>> Well, I'll bounce something off you that I was thinking about when I was trying to think of higher dimensions in arrays and transposing them.

Because that's -- to me, I was trying to explain to people how you would transpose, say, a four-dimensional array, what does that mean.

And what I came up with is think of an apartment block, and you've got a number of floors, and you've got a number of apartments on each floor.

So the floors become the columns and the number of apartments on each floor become the rows.

And all we're saying is that's consistent.

So say you have six of those apartment blocks in a row.

Now you've got a six by number of floors, number of apartments.

Now what transposing does, say you wanted, instead of organizing it so it's apartment block, apartment block, apartment block, what this allows you to do is say I want to put all the apartment numbers together.

And that's how I'm breaking it down.

And then I'm going to go to floors and then I'm going to go to apartments.

But I can -- and it won't look like anything like an apartment block anymore.

>> Yeah.

>> It's going to be -- >> Dynamic transpose is counterintuitive.

It's very tricky.

I've never been able to visualize it in any way that I've been happy with.

And apartment blocks, yeah, that's pretty concrete.

That starts to get there, I think.

>> Well, and you could say -- >> Certainly -- >> Well, I was going to say you can easily expand it.

You can take that and you can say, okay, so in every square block there's going to be four apartment blocks.

And then there's going to be a certain number of square blocks in a city.

And there's going to be a certain number of city in the country.

And -- >> Now your geometric visualization begins to break down.

It breaks down after three dimensions.

Right?

In three dimensions you can say I'm going to slice horizontally, I'm going to slice vertically or I'm going to slice depth.

>> Yeah.

>> But as soon as you go to four dimensions, you can't say that anymore.

It becomes abstract.

You cannot concretely visualize it.

>> Yeah, you can't.

>> There are no more slices.

>> Yeah, there are.

Yeah.

Okay, so your initial three dimensional that you're talking about, you've got a block, a cube to work with, right?

And now you want to do the next dimension is going to be a row of those cubes.

>> Sure, but you don't have the adjacency anymore.

In three dimensions with each of your planes, you've got adjacency of elements.

And it works.

You don't need to imagine rearranging anything to get your planes to line up and work properly.

>> Yeah.

>> As soon as you say, well, I'm going to have this sort of dispersed hypercube, now there's no adjacency, right?

The 3, 1, 4 apartment in the first block and the 3, 1, 5 apartment in the second block, they're not adjacent anymore, spatially speaking in your head.

The plane slices don't work anymore.

>> Okay, I see what you're saying.

I think I see what you're saying.

The way in my head, that row of apartment blocks is the thing.

And the adjacency is the fact that from one of them to the next one, those are adjacent.

It's now a thing that's got the extra dimension.

>> Now it's numerical.

It's not really spatial anymore.

There is no more juxtaposition, spatial juxtaposition of apartments that happen to share a plane, hyperplane.

>> Right, unless you start transposing.

>> Right.

>> Yeah.

>> That's what I mean by it breaks down.

>> Yeah, no, you're right.

My visualization can go in multiple dimensions too.

>> Sure.

>> You know, but you're right.

It doesn't become -- I can't really work with juxtaposition until I transpose, but that's true of the array languages.

>> Oh, sure.

No, I'm certainly not claiming otherwise.

I'm just saying that the intuition does start to break down after three.

>> Yes, it does.

>> That's my only contention.

>> Yeah, if you're trying to think spatially in four dimensions, then I think you -- well, the thing is, is four dimensions includes time, right?

>> If you're using spatial dimensions.

I mean, technically a dimension is a measurement in some direction, but it can also be like mass or force.

Anything that's a measurement can be a dimension, basically.

>> Yep.

>> It's a kind of measurement.

>> When I was just -- >> And even in spatial dimensions, they don't have to be orthogonal.

You can have dimensions that aren't independent.

>> Oh, sure.

>> They're not completely independent.

>> Could you give me an example of that?

>> Yeah, I mean, if you have three dimensions on a plane, you know, on the sides of an equilateral triangle, they're not completely independent.

>> Yeah.

Okay, I see.

So you're mapping them in that case.

>> Yeah.

They're semi-independent.

You get two of them, you can figure out the third.

>> In any case, I wanted to float the notion of using the viewer to view more than just documentation, education, and posts, maybe to view code, maybe to view nouns.

And just to see -- I'm a big fan of readiness to hand.

Heidegger had a lot of things to say about that that I don't, frankly, really understand.

But the point is readiness to hand is really important.

So once you've made the commitment to making the JViewer ready to hand, you know, control shift H or however it is you've set it up with your keyboard shortcut, I hope you're using a keyboard shortcut, we can make other facilities, other viewing facilities for code, for nouns, maybe for other things, immediately available to you, immediately ready to hand.

And I'm potentially interested, pending feedback in exploring that possibility.

So I thought I'd float it here and just see what the reaction was.

>> First thing I've got to say is, yes, of course, I'm using a shortcut.

And to give you an indication how much I think JViewer is valued, my shortcut is F12.

>> Ooh!

>> Yeah.

I just hit F12 and boom, it's there.

>> Now, wait.

Now, do you have a soft keyboard where you have to hold down the function key to get your F12 to appear or do you actually have a dedicated F12 key?

>> I have a dedicated F12 key.

>> That is very impressive.

>> I have a function key as well.

And if I hit the function key, then it increases my volume.

But if I don't hit the function key, it just takes me into JViewer.

>> Oh, well, that's interesting.

>> It's one button, yeah.

>> Wow, okay.

Well, I am very gratified to hear that, Bob.

>> I thought you would be.

It is.

It's a one-button push.

Boom, there.

I'm there.

And it's just great.

>> I was thinking that if it were JIG or something like JIG, you could actually play a game where you'd have a menu with locales, so all the namespaces that are active right now.

Pick a namespace and a second menu that would be the global variables defined in that namespace.

And that would be a quick and dirty way of letting you, well, review your global variables, which is something I've always wanted to do in the IDE, but it's not, to my knowledge, not available other than I have to type something in.

But if you picked a global variable, then you'd have a JIG-like noun browser on the contents of that variable.

So make it very quick, very easy.

You don't need to type anything.

That's, to my mind, the problem with a lot of the utilities that are available as add-ons particularly is you have to type stuff typically.

And that dramatically reduces readiness to hand in my mind.

And I think we can improve on that potentially.

>> Yeah, in the case of JIG, I actually use F6.

>> Yeah.

>> Henry's got F3 for dissect, and I've taken F6 for JIG.

And what's really nice about that is all I need to do is highlight whatever I want to see.

I just highlight it, hit F6, and it shows it.

But you're right.

I haven't gone into the point where I've explored locales.

But, again, it's something -- you know, it's funny, the reason I put JIG together was because all that information was available, but you had to know what incantations to use to get it out.

And by putting it in SVG, it becomes immediate to accessible to you.

You just hover and you're there.

You can find out what you're dealing with.

>> Yes, that's very important.

>> And the same thing is true of the locales and the globals and stuff.

All that's available.

You just have to know what to do to put it in.

So I haven't built that part of it.

>> Yeah.

>> I haven't built that part of it yet.

But you're right.

That would be a very useful thing to put together.

>> And not hard.

>> No, not terrifically hard.

Honestly, the hardest work in JIG was trying to get the boxes working.

That is really tricky.

>> Yeah, I've thought about what you do if you've got nested box structures, nested three and four dimensional box structures.

It's an interesting problem.

I think it's doable.

And I think you -- I don't know.

We'll see how it goes.

I'm not sure.

It's easier to show than to describe.

But I haven't built it, so I can neither describe it nor show it.

The way I dealt with it was I treated it as nested box structures.

And so I keep going down until I get to the end of my recursion.

That's the box, like when I hit my lowest box, that's the box that determines the size of the next box up.

>> Sure.

>> And so each time you come back up a level, all those boxes that you've got then have to order themselves in the right way.

And the next level up, it orders itself with all the others.

And it actually does work.

But it was tricky putting that together.

>> Yeah.

The whole tree layout problem is a venerable problem that a lot of undergraduates break their teeth on.

Yeah.

It's definitely true.

>> Yeah.

[ Laughter ] But -- and JIG does work quite well in JHS.

>> Oh, really?

>> Yeah.

Because it's just SVG.

>> Oh, sure.

Oh, interesting.

>> In fact, I have versions where I've gone in and played around with JHS, changed the input.

So by -- I think I've got -- I think I was using control question mark.

I can switch back and forth between having all my results show up as JIG or have all my results just show up as text.

So when you're typing something in, it can automatically come back as JIG.

>> Right.

>> And then you're -- >> You're also thinking that whatever -- you have an input field where you could put a global, a variable, in the current locale, whatever you'd selected.

And you'd have a JIG-like display for it.

But that input field could also take arbitrary code.

So you could make transformations on that input variable, which would immediately be reflected in whatever you were looking at.

You wouldn't have to change the variable.

It would be the result of the whole field expression.

And, in fact, you wouldn't even need to have a variable.

You could just have an expression, I.

3456, you know, random, whatever.

And that would work, too.

All I've got right now is sort of pen marks on paper.

But I think it's something that could be done.

And I think I'm going to take a run at it.

>> Well, if I can help you in any way, let me know.

>> You're very kind.

Thank you.

>> I don't want to pollute too much because you may well come up with something I haven't come across.

>> It's not pollution.

It's inspiration.

>> Okay, as long as it doesn't -- I don't want you to -- I'm more interested to see what you find.

And then if you get yourself stuck -- >> I can't wait to see it either.

>> Yeah, yeah, yeah.

>> Okay, thank you.

>> And then bounce it back off me and I'll try and -- >> All right, well, give me a week.

I'll show you what I've got in a week and we can see what you think.

>> Okay.

Well, that sounds excellent.

>> All right.

Yeah, go ahead.

>> Well, what I was going to say is the other thing is a lot of what you're suggesting -- and Dissect won't work in JHS.

It has to be in JQT.

But if we put the AWS JHS next to the wiki, then what I was thinking is, is there a possible way that you'd have a button on your viewer that would replace the navigation section, if you're on a page, with JHS AWS?

>> Hmm, to what end?

>> Well, that would be your wiki page working area side by side right there.

Your viewer would become a viewer into JHS.

>> I don't know if that solves the right problem.

I view the wiki, the browser-delivered wiki, as still the primary window into JLore.

A lot of JLore, not all of JLore, but a lot of important stuff.

>> Yeah, thinking about this, instead of needing the Amazon JHS, because you're already in J, it sometimes might be convenient to have the browser and the underlying J session side by side.

But the windows are too wide for that.

So if there was a way of just playing with the windows to make that happen, I think that's what he's going for.

>> That's where I was using real estate within the current viewer, and I was thinking to myself, if I want to go in and explore something off of wiki page, I'm not so interested in going around the wiki pages anymore.

So the navigation now isn't as useful to me.

If that became -- and I was thinking of two buttons, or maybe a toggling button.

One button kicks that into that mode where you would see a JHS working system within your J viewer, and you take the button again and you're back to navigation, you can go looking where you want.

>> I mean, Raul's point, which is extremely well taken, is that we don't need JHS.

We've got a perfectly usable J engine right there.

We know we've got it because we're running the J viewer.

So there's nothing to stop us from leveraging that engine in the navigation area.

So one of the -- >> You could just run the terminal in that space, you mean?

>> No, I don't know that I could run the terminal, but I could run something like the terminal, something that would sort of look vaguely like the terminal.

One of the categories in the table of contents on the left would be terminal.

And when you selected it, you would get something that acted more or less like the terminal.

And it wouldn't change the contents of the browser.

So you could continue to consult the browser.

>> What you can do already, although it takes a little bit of thinking to set this up, which is I guess the problem, what you can do already is you can put your web browser side by side with the yellow J window, click the browser button, and then you have to have the thing and bring those other two windows to the front.

But once you do that, you have J side by side with Wikibase.

The problem is it's just a little clunky to bring two windows to the front.

>> Yes, exactly.

Yeah, I don't think it would be hard to do something like the terminal.

Although, as I try to think about the next step after saying that, I admit that I'm a little stuck.

But I don't think ringing JHS into it is necessary.

As I say, we do have a perfectly functional J engine available to us locally.

>> Right, that's when you're running JQT.

>> Yeah, which is already doing for us.

>> Which is already doing, yeah, for the viewer, yeah, yeah, yeah, yeah.

I've got to think about that.

Because, yeah, I've never tried that.

I've created different windows using JQT.

In fact, that's actually what, you know, JIG is.

It's just a window I've created.

But could I create a window that's got the terminal within it?

I think I could.

>> Oh, yeah, I don't know how to do that.

But maybe you could.

>> There's a whole section in the JQT stuff about the windows -- the session manager, I think is what they call it.

>> Ah, so maybe there are hooks that you could use.

>> I think there's hooks into doing that because you can certainly create extra edit windows.

>> Sure.

>> There's a lot you can do with it.

>> It's built into the environment.

>> Yeah.

>> And you can also make calls to JQT's DLL.

Although I don't know if there's a call that does the terminal interaction.

But one of the things that JQT currently does is it makes calls directly into the JQT DLL.

And it's kind of an interesting setup.

>> The question I'd have -- I was exploring this through JHS.

But the question I would have with JQT is the same.

Would you be able to cut and paste something out of the wiki page and drop it into the terminal?

And I think you can do that.

>> Yes, you definitely can do that.

And you can already do that in the browser.

The thing is that there's a little bit of clunkiness because the intentions of people building these things was in a slightly different direction.

>> Yeah, but I think whenever I've taken something off the wiki and dropped it into J, it works.

>> Yes.

>> So even though it might be formatted differently, something is making that translation.

>> There's no translation, I don't think.

>> Yeah, it's just ASCII text to ASCII text.

>> Well, except in the wiki it's wrapped in HTML, right?

>> But you're copying it off the browser.

When you copy and paste into a plain text field, you don't get HTML, you get the text.

>> You're right.

So it doesn't need translation.

It's just going straight across.

Yeah.

>> But it's a habit.

It's not just a push a button and explore.

It's a habit you have to think about consciously and develop before it's something you can reach for when you're not thinking about it.

But I think the important thing is if you get that working, then the potential to do that is there.

And then the only question is educating the person to say you can do this with this.

I think once people knew they could do it, they would be doing it a lot.

But if they didn't know it was there, they would never use it.

Anyway, I should show you some of my ideas for what I'm playing around with right now with the wiki.

I'm going to go back to here and share.

And share.

There we go.

So I'm back here to the wiki home page.

And then I've got these down here and that's fine and everything.

I've gone to newcomers now.

And I've got this same thing down the side.

But there's nothing to open to in these guys.

But I learned how to get rid of all those pages underneath here.

And instead, you've got access to these and you've got access to this.

Where that becomes really useful is say go to essays and articles.

Now what I've got is in this case, this is ideally what I would end up with.

I've got this along with the description of what you've got going on there down here.

Down the same side, now this is where all those pages are.

Like those are all pages.

They're not listed the same way as this.

You're actually looking at the pages that are associated with newcomer essays.

And where that gets to be really useful is when I get into things about reference.

Because when I get into reference, I'll go back all the way to home.

I get into reference.

Now I've got really big things to deal with.

I look at something like J essays.

I haven't populated this yet.

But here are all the essays.

These ones aren't associated.

These are just pages that are associated with J essays.

But as well, then I've got the different essays underneath these.

All those pages.

But what I'm saying is -- and again, I don't have anything down here.

So all this clutter down here that was sort of shaped in weird, strange ways, I've still got -- because everything that was down here shows up in this category tree.

>> And may I ask, if you were to pick on -- if you were to select anger essays index, for example.

>> Yep.

That would go to the page.

>> Okay.

But the tree that we were showing or the subtree that we were showing wouldn't be included anymore.

>> No.

>> Okay.

>> No, it wouldn't.

When I go to a page, unless I decide -- how do I do that?

You know, the easier way to do that would be to decide to put anger essays.

I've decided anger essays is part of reference.

Essentially essays in reference.

So that's where I placed it.

If I placed it in one of these other things, it would disappear from here, but I would have access to it through here.

>> Right.

>> So it may just be recategorizing some of these.

So, for instance, what might make sense is I've got these categories under essays.

If I included a category, said it was stories, and said, okay, essays now has a category called stories, it'll be R.

3.

9.

Then all of these could be put into that category.

They would disappear off this page, but you would see them here under stories.

>> Right, but my question is -- my question is when I go to one of the nodes, like essays about or essays absolute and relative tolerance or essays directory, why does my table of contents, my navigator, disappear?

That's my question.

>> Because I'm now looking at a page.

I'm not looking at a category page.

>> I see.

Okay.

>> And I could do that.

I could put a category page on each of these, but essentially what I would be doing is say I went to this one and put a category page on it.

Well, it could be categorized a number of different ways.

>> That occurred to me, but if you've got a directed acyclic graph, then you don't know what subtree to put on the page.

>> This could easily be part of NUVOC.

>> Yeah, exactly.

>> Maybe not an essay.

>> Is that common?

>> In some areas it is.

>> Multiple categorization?

>> Yeah, in some areas it is.

Well, if you look at -- let's take a look at this one.

See what I've got.

I don't know what I've got down here, but it will be categorized a number of ways.

I picked one where it's only essays.

So this one is actually only showing up in essays.

It's not showing up anywhere else.

But there are other ones.

If I go back to NUVOC -- I'll go back to reference and go to NUVOC.

This one was where there are so many pages down here, they can't show them all.

But it can show the whole category tree.

>> Yeah.

>> Which is really cool.

It's actually showing me more.

Actually, no, it doesn't.

It only shows the top 200.

So it's even clipping it there.

>> Yeah, I'm familiar with that.

>> So what I did -- what I've done there is when I got into here, there was a whole bunch of frequently asked questions that I put in their own category.

I actually created a new category way down here called frequently asked questions.

It didn't exist before, but now it's got all these questions that were sitting in NUVOC before.

And they're useful, but they're more useful as a frequently asked question category.

>> Sure, right.

>> Anyway, so that's the way I'm kind of leaning is working it that way where I don't have all these extra pages floating in below.

If I go back, I can show you what it would look like if I don't because I haven't done anything with community yet.

This is where I'd have this, I'd have this, and then this is all these pages floating down here, and they're separated from subcategories to pages.

This is what I'm getting rid of and putting it into here.

>> Excellent.

>> I think it's an improvement.

Even though the 200 limit can be an issue, to me what the issue is I should be looking at my categorization closer so that I'm not -- >> That's true for everything except NUVOC.

NUVOC just has a lot of children.

>> Yeah, but if we go back to NUVOC, reference NUVOC, look at what's in here.

I've got the essays in here.

>> Sure.

>> Now, do I need all those essays?

I think some of them are more applicable than others.

There's some I'll probably take out.

I've got a bunch of guides in here.

It may not make sense to put all the guides in here.

>> Yeah, that's true.

>> I'm all the way down to here, almost halfway down this page before I even get to the vocabulary ones, and that's NUVOC.

And that's the ancillary pages.

So I've kind of got it padded out right now.

But all I need to do to fix that is look at my categories and say, well, make an assessment on whether one of these essays has such validity that it should be part of the NUVOC category.

It's got value, it's just whether or not it's, you know, in NUVOC.

And if I kept NUVOC to NUVOC, it would show up -- it's going to show up in essays anyway.

But, you know, it just means you wouldn't find it going through NUVOC.

>> Right.

>> And to me, there are some things I've got in NUVOC that probably shouldn't be in NUVOC.

That's not where you should go looking for them.

Anyway, that's where I am with that.

>> That's cool.

>> Yeah.

And I think it's going to speed things up because essentially if I say, for instance, something like NUVOC, once I've cleaned up this massive categories, my way of thinking, it's ready for prime time.

Because I've got all the links down here that you would want.

I've got a link to NUVOC directly if that's what you're looking for.

But reference is really what you're looking for.

So essentially I've put all the links you could possibly want in here.

And if I clean them off a bit, it's just recategorizations required.

And if I go back to all these like J essays the same way, these J essays could end up looking quite a bit like the newcomers essays ended up looking.

So in fact, I would use a lot of these because they're already in the main essays.

I'll just copy these links and descriptions over to the main essays to populate it.

It's just this list is much longer in the reference one.

Yeah.

So that's my what I've been playing around with.

And I'm actually pretty happy with that because it looks like it'll speed things up to get us into the new format.

And then after that, it's just ongoing categorization and building up descriptions and that's just work continued on but now the wiki structure is there for people to explore.

That's great.

Yeah.

So any thoughts on that before we wrap it up because we're over our time.

I was.

I have another subject that I guess I'll wait for next week on.

No, no, toss it out.

Okay, I've been trying to put my, you know, off and on, I've been trying to put together a lab on regular expressions.

And I keep running into little issues like, should I explain this thing different should I develop this code a little bit further, that sort of thing.

And I'm just wondering how, how do you guys approach, how would you approach developing something for an audience like that, where you don't know, you know what the audience is background quite is going to be and you don't know quite how far to take it.

Whoa.

It's like I can't characterize my audience it's hard.

What you're facing is instructional design.

That, that is an entire profession.

That the people who are.

No, I know, no, but that doesn't mean you can't you can't apply it you can't apply the rules to it.

And one of the key things is as it points out is you have to define your audience.

You have to, because you can't teach anything to everybody.

Yeah, but I've got, it's like I have a page of code here, and I'm trying to explain how it works.

Right.

Fundamentally, the question is, one, how much background I need to get people before as a part to explain that code.

And another is, should I add on to that code to add additional chapters to the, you know, or is it better just focus on the more than minimal stuff, or should I even cut down some of it to, you know, cut out some of the possibilities to make it simpler code and simple data structures.

Okay, to simplify things a little bit.

Let's assume your audience knows reg expressions.

Right.

Okay, all you're doing now is you're showing them how it works in J.

Does that make it easier.

That does that that's partially, although I still there's there's a whole terminology around, you know, how the how how these things work.

And the question is, will your audience know that the audience, the audience isn't going to know that they're going to know some of them well but most of them are just going to know the notation, and I'm not using the notation I'm using the concepts.

I've abandoned the notation because I just want to show how the engine works.

Okay.

And I've abandoned even some of the non regular expression things that go into regular expression engines because it's that becomes a whole distraction.

So you're creating a new application.

But yeah, I mean it's it's paid to code that does regular expressions.

You need some few examples, and then you show how these examples, turn into the code that build the regular expression engine and how you use the rate, and currently all with the ones with the one screen a code type, it's on the screen.

But all I do is I can match, you know, does this does this string matches regular expression I don't get tokenization I don't get some extraction extraction that stuff.

I don't even get partial matches all that's pretty easy to add on.

Before you expand the scope of your application.

I would just focus on explaining the application.

Show examples of what it can do, how it does it, and that's the application.

I don't think you have to explain all regular expressions to do that.

No, I don't but I did have a most of it was actually explaining the mechanisms that went into it.

Rather than explain how to use it maybe maybe right maybe I should just start by throwing it out there and then and show how to use it and then, then get into the details after showing some example, how the examples are built.

That's an interesting approach.

Well, and if you're if you're looking at how it was built, then you're really looking at documentation.

I am right.

And that's a different.

Maybe instead of doing a lab I should just do documentation on it and and come back to it later.

And you could do a lab but use the lab for users.

It's just a user manual it's not a technical manual.

Okay.

When I did jig all I do is I show what you can do, and how you do it, and what comes out.

And we're, you know, and then I showed some of the reasons that I developed it because I showed areas that it was hard to find information and did it that way, but I didn't explain how I'd written in SVG.

In this case, the whole point of doing it in J is so you can see how regular expressions work because you've already got implementations that were great, you can you can already do regular expressions, but you don't get an insight into how these, the underlying mechanisms of, you know, how would you, how would you program something to recognize regular expressions and that was the purpose of this is to teach the concepts behind, you know, the, you know, what what what what what's happening so so you can have a visual.

You're trying to exculpate explicate explicate a regular expression engine built in J.

Yeah.

Whoa.

And the purpose of it is to explain the concepts of regular expressions and also to show how they can be built in J but yeah.

I would focus on the user using the regular expressions, and how they would use that that application.

That's not what he's trying to teach these people already know how to use regular expressions.

What, what role is trying to teach if I understand correctly, is how you would build your own regular expression engine.

If you were on a desert island, and didn't have one.

Basically, yeah.

Okay.

What are the concepts behind what are the concepts that went into building a regular expression, as opposed to some other approach that you might use in parsing.

I would use simple examples of regular expressions, and then show how you convert those to what you're doing.

And I wouldn't go into anything that required going depth deeper than that.

So in other words, if you're assuming a person knows how to use regular expressions, and you're trying to show them how in J you would build something that would do regular expressions for you.

I would take an example of, I want to take, I want to pick out all the a characters out of a text.

And this is how I would build that in J this engine to do that thing, but it doesn't pick characters out it matches on text that has a Zenit.

Okay, I'm not doing, I'm not doing for the seas that you can do the sub extraction, extraction that's a deeper problem because it involves tracing down to a specific path through the text.

So, you're doing then you would just end up highlighting the ages that but you're indicating where they are in the matrix, not even, not even.

I mean, the fundamentally this is a truth value function that says does this string match or does it not match.

And I, you know, and I could you could expand that to saying, I'm going to tokenize a screen text by having all these different regular expressions and I'm going to pick which one matches first and I can I can go through it that way that would be a second chapter.

This is this is this is chapter one which is doesn't match it doesn't not match chapter chapter three would be doing the parentheses extraction it's a much harder problem.

Go ahead.

I have, I have no advice for you directly.

I was learning regular expressions 40 years ago, there was a language that was already old and indeed out of date.

But it had a manual, and it did a marvelous marvelous job of explaining regular expressions.

So, Yeah, the original a string I would quite nice.

I know this was, I don't think this was a TNT This is a language called snowball.

Oh yeah, I said no bll.

And I don't really remember anymore, how closely it huge to what we now think of as the reg X notation.

But I do remember the examples that it showed and the way it taught me to think about matching.

And I liked it.

It was it spoke to me.

I'm, I was using icon back when I was in college, which is a descendant of snowball.

Okay.

Yeah, I saw was very string oriented language.

And so as I can.

I believe that's the essence snowball isn't it.

Probably.

Yeah, I think so.

What's, what is the noble stand for that's the, that's the mystery.

The L is a language.

I don't remember now but I'm pretty sure it's an acronym.

The N is also from string.

Oh, okay so they oriented, it's got to be oriented.

Yep.

And then symbolic language.

Back referencing.

Oh, God knows.

All right.

That's a good one.

I'll think about that but I would, I would do it almost like if I'm doing a lab I would do it by examples.

That's how I would do it.

Well yeah, start with a simple example show how it works.

Your goal is to show doing something nifty with J right and the example you happen to have chosen is bringing is building a reg X engine.

Right.

I think that's great.

I don't.

It's just a little bit bigger than your, your, your standard screen size because you're doing with, you know, like an array of 256 columns because you're indexing by character.

That's my point.

But it fits on the screen if you have a white screen and you don't care about the stuff on the right side anyways and so it's all blanks.

The, the other approach would be to document it something like Henry's done for dissect with lots of comments and explains how it's being built the whole way through.

You want to, you want to make.

Points about how applicable J is to this problem, and about the parsimonious nature of the implementation, given how much it's doing.

Right.

That's a man maybe you can do that in comments that's entirely possible but it feels more like documentation.

Maybe it does feel like a lab.

It's a literate programming exercise you want text and explication and you want executable code and you want to put, I guess maybe I need to do all three and do a few iterations over it get some feedback and process.

But don't despair because it's an instructional design is a real challenge.

People who are good at it are really good at it.

I love doing it when I was doing my master's it was one of the areas I just went, Oh, if I could do this all day long, but it's, it's a, you will do it all day long, it's a lot of work.

It's not, it's not a simple thing, but it was dead on you got to, you got to determine your audience first.

And then once you've got your audience.

Then you have to determine what it is you want to say to them.

And what your expectation is what they'll take away from it.

And you're trying to always coordinate those things together, and it's all levels and layers.

Yeah, I'm kind of inspired by the Huffman compression lab that I can Iverson put together I can't quite get that level of conciseness I don't think, and the field itself is a little messier because it's not a specific algorithm it's it's it's it's a family of algorithms, but that's kind of where I wanted to be, I guess.

Yeah, and Ken was a really good instructional designer.

When you take apart his labs, they're really good.

And one of the areas I saw him do he did a live text on Saxon math, seven and eight.

And I was really impressed that he picked that because Saxon math use what they call a spiral approach, they would keep going around you keep hitting every couple of months you'd hit the same things you were trying to learn.

But each time, there'd be a jump up in fluency, you'd have to do it faster and better.

So that you, you, you'd forget about it for a while and then it come back and you have to learn it again.

And by the third time you get it and because I was homeschooling my son using Saxon.

It was amazing how how it stuck by about third time through in the spiral approach.

You got it you've got it inside you've internalized it it's just amazing.

And that's kind of approaches, and that's a good fit for math in general, I guess, because of the way math itself is built, where you have simple concepts that tie back to get together and to show the connections, you got to do several passes over it.

And it's a better path and quite often math is taught which is linear, which means if you gap out for part of what's being taught.

You may or may not realize you've missing that key part to your education until 25 years later when somebody says, well about set theory and you realize you don't know anything about it.

Whereas the spiral approach would mean you absolutely would know about it.

If you didn't get it the first time around you get the second time around.

Third time around fourth time around we're done.

Yeah.

Yeah, neat, neat.

Again, I'll be interested to see what you come up with there.

And if I can help you out let me know.

All right.

A long time since I've done reject so I'm probably a novice at it anyway.

It's a state machine, basically, you know, it's just with slightly bizarre states, not really bizarre just slightly bizarre.

Yeah.

Well, I could be explained to me and I would learn something.

I'll think about maybe I can should do something like the spiral approach, maybe I should do several passes over it, you know, with a simple pass, and then I'll Google instructional design and see what what resources are out there.

Because, because there's, it's, it's a, it's definitely a field that has a lot of people contributing to it.

There are people doing blogs on it for sure.

And and input and groups that are working together on it.

Thank you.

Yeah, great.

Anyway, until next week and we all got something to work on so that'll be fun.

Yeah.

All right.

Thank you both.

Take care.