FAFO on GitHub

Joy projects. Impact. Transclusion?

Joy Projects

I am fortunate, in a sense, that I am quite old and am free to do pretty much whatever I want. You are perhaps less fortunate, in that what I want to do is to work on these odd programs and articles. Although, I hope, if you are one of my readers, you do it because, somehow, it pleases you1.

My articles and the programming that backs them up is what we call in the trade a “Joy Project”, a thing we do because we enjoy it. And, to me, that’s the Prime Directive of Joy Projects: we get to enjoy them. That means, among other things, that we get to choose what we’ll do and what we won’t do, and we get to choose how we’ll do it, and how we won’t, and we can stop any time we want.

But I do really love to have people talk with me about my joy projects, and to have them advise me on things I might do. I value the engagement greatly … and still, I get to do whatever will bring me joy.

Yesterday someone tooted me up to say that they’d have found my Asteroids/Space Invaders work more tasty if I had used the original bitmap fonts. I was delighted to hear from them and to know that they cared enough to get in touch. That doesn’t mean that I’ll do it: my present guess is that it would be a pain to do and that there isn’t much to learn. If the person writes back and says what they’d like to learn from the exercise, I can imagine that then I’d be inspired to try it. So my joy can be influenced. And certainly I am here to share it. Otherwise I’d store these articles in the Trash folder.

In these FAFO articles, I’ve been flirting around the edges of GeePaw Hill’s current joy project, a thing for producing and providing a curriculum to multiple cohorts of students. He has a certain vision for how that should be done, and I freely grant that he is a far better and more thoughtful teacher than I am, so his ideas are surely pretty great. And yet, I share my ideas with him.

I do that for two reasons. First, expressing my ideas, especially in a conversational back and forth kind of way, helps me improve them. Second, I share them with him in the fond hope that once in a while he’ll find one of them useful. at least in that “well, I’d never #45#! do that” kind of way, and sometimes even in a “hmmm” sort of way. And once in a while, that happens. Sweet.

So over here I am thinking about how I might write and deliver a curriculum of documents and over there, he is thinking about it. Since we get along well, we’ll probably both benefit from the idea sharing.

We’re both working with the notion of a tree-like structure of documents in mind. And I am quite sure that our notions are different.

I write these articles in markdown and use Jekyll to render them to HTML to put them on my web site. So I write in (nearly) plain text, and I can only produce pretty output to the extent that HTML and my CSS ca do that, and I change my CSS only reluctantly, because CSS. Hill is looking at Rich Text, and how he plans to produce it, I do not know.

Hill is thinking tree-like, and while I say that I’m thinking that also, my notion of tree-like looks a lot like text with embedded hyperlinks in it. His, to the extent I’ve gleaned so far, is tree nodes containing text, with child nodes also containing text and possibly other child nodes …

In my writing of these articles, I rarely link to another article, but I do it sometimes. When I do that, I find the article, copy its URL, edit it into submission and insert it into a Markdown link, which looks like

[some reference words](/articles/-y023/python/-9s330/332/)

Similarly rarely, I might want to quote myself. I do that by finding the article in my source folders, and copying the text to be quoted, and pasting it into the current article.

At the frequency that I do those things, that approach works. If I did them more often, I might need better tools.

If I were actually writing a curriculum, I’d surely want something more explicitly tree-structured. I envision something like a book—I’ve written books, so I know a bit about what I’d want for that—with sections, chapters, topics, maybe exercises. I might keep those in a tree structure of some kind.

I am reminded of the product Scrivener, which I have used a lot, which does keep a book in a tree structure, while also providing an index card view and other ways of looking at and organizing a book. Scrivener is a jungle, and it seems to me to be quite likely exactly what its primary creator wanted in a book-writing app. It is compellingly capable … and quite definitely not quite what I would want for writing a book.

Imagine a Course

Suppose we were writing some course as part of a larger curriculum. There would be lots of text, nicely formatted of course, probably. We might have a glossary of definitions that were curriculum-wide. We might have a library of exercises from which we would select certainly exercises for a given presentation of the course.

There would surely be an outline structure for such a course, and an outline is a tree. So we can imagine that tree displayed along the side of the student’s window (or the author’s), and they could click anywhere in that tree and see the page that corresponds to that node.

There are questions. Given this bit of tree structure:

  • foo-vs-bar
    • essential-fooness
    • essential-barness
    • what-of-baz

And with our tree cursor on “foo-vs-bar”, with its text on screen, when are we supposed to click on the inner ones? As we read? After we finish this page?

In HTML, I get to suggest when you should click to another place, by placing the hyperlink. I can place it right in the middle of the text. I can place it at the beginning or the end. I can place it in a footnote.

I can even make it unfold>

Here is the expanded text that you were wondering about, and you have had the option of seeing it or not depending on your personal preference. Isn't that just so nice?


If I were creating a course to be used on line, I would probably want to have the ability to do things like the summary/details thing above, but to refer to a separate file, such as a definition file. Would that mean that every word in our glossary needs its own file? I suppose that would depend on how we built the thing.

My Joy, My Project

For my own amusement, and I hope yours as well, I propose to play with a few ideas in this space. At this writing, I believe that I might think in terms like these, blurted out more or less randomly:

  • Documents can link to or include other documents in line.
  • Maybe a document can include a part of another document.
  • That will probably require some cooperation on the part of the referenced document.
  • Some kind of pre-pass over a document will be allowed before display.
  • I’ll probably use some set theory, although probably not a lot.
  • I may or may not build a GUI.
  • There is no absolute requirement: I can do anything or not do anything.
  • I can stop at any poin.

For a time, I will spike some ideas, perhaps trying different ways of doing the same things, or the same way of doing different things, before combining the ideas into anything useful, if im fact I ever do that.

If I were more ambitious than I likely am, I might build this into my web site builder with some custom Ruby.

In short, I intend to FAFO for a while with this idea, to see whether it leads me into green pastures of interesting thoughts and code.

I invite you to follow along, and to comment via mastodon if you care to. You can find my Mastodon link on my support page. There is no charge. I respond to all reasonable messages.

I’ll probably start coding later today. For now … I’ll have a little break.

See you next time!



  1. In my past I used to occasionally eat horehound drops solely because they really pissed me off with how awful they tasted. If you read my articles for a similar reason, well, that’s OK with me.