This article is written differently from the rest, initially written as ``stream of consciousness''.
I wasn't planning on writing an article today, but in its early hours I mulled over what my goals in programming are. There's value in reimplementing something, even the poor things, in ways which are more concise, beautiful, robust, and useful. Surely, my programming shouldn't be purely for its own sake; there should be solidified goals, those real problems to solve which are entirely disconnected from hacking. I wonder if I'm merely imagining ways to remove drudgery, or if I'm imagining a lever for the mind, and how these differ. I wonder what an automatic vehicle for the mind would resemble.
I expect to heavily edit this article as new thoughts visit me, and as I recall more of those prior.
I fantasize about the advanced computers I wish to bring about. I envision dedicated machines using entirely custom software, built in every way towards helping men create art, though I'm no expert in most artistry; I'm certainly a writer, however, and can somewhat see the details of my ideal system.
Even earlier in the day, I was considering how I'd provide Ellision versions of my writings, and I'd decided this is a malformed concept. Ellision is more akin to what the ``text field'' would contain than a ``document'', even with layers for sentences and paragraphs; I dislike ``control characters'' and the issues they bring about, permitting haphazard formatting to occur; it would be inappropriate for my Ellision to contain a structured formatting system, near its base. Thus, I'd need a separate format which contains Ellision text. Such will play nicely with my plans to have an Ellision forum, The Ellision Forum of Verisimilitudes, as I'd be able to use its message format, once it's in place.
I yearn to use targetings of my MMC to write books documenting machine code programs; the left pages would be used for the machine code and the right for descriptions. I use omnipresent constraints in my writing, although I allow them to vary appropriately, as the medium is the message and a document to be typeset is distinct from an isolated message or mere speaking, though using the same language. Be it reflowing to avoid paragraph splitting, rephrasing for fewer inserted spaces, or rewriting for size constraints, the best writing doesn't seem so separated from its medium as would at first seem.
It's fair to expect that binding segments to fit entirely on a page would be possible, and to report errors otherwise; this enforces a constraint, for nice results, and wouldn't strictly interfere with inserting or deleting pages, above this constraint; I wondered how I'd organize this. It seems easy to avoid constant switching by representing such a document as two documents, representing the final book as an interleaving thereof, and having a system specifying how this interleaving is to be done.
I figure the first such book I write will be written with haphazard tools, in a haphazard way, and I wonder if I'll ever properly build these tools I dream of, but I'll believe. Working with haphazard tools will at least serve as experience to guide my true tool; this true tool would allow more to be done without mistake in less time and with less effort on my part, and while this seems that essence of IA, I can't help but find it's perhaps simply not as profound a realization as was first figured. I experience the sensation that it isn't more becoming possible, instead merely more being feasible.
Ellision permits a word whitelisting approach, whereas I figure typical tools operate primarily with a blacklist, which Ellision can also trivially support. Inherent spell-checking is an advantage and making every word not in the dictionary suspect, but grammar-checking could also come about, through adding classifications of words and comparing basic patterns. I've seen of grammar-checking done by ``AI'', requiring large amounts of ``training'', and apparently coalescing writings towards mistaken ideals; it would be nice to have a simpler system achieve the true goal in a comprehensible fashion.
I'm vaguely aware of the Canon Cat; it should serve as prior art and as a source of features I could perhaps give new life to. It's most pleasant to imagine this typesetting system as extension to the programming system I want to build, rather than as a distinct unit, but this may merely be result of my familiarity with these two topics. I want to program without text getting in the way, by using a visual system. Typesetting could build from this, by merely using the display, and largely omitting meaning from it. With those envisioned books, it's pleasant to imagine my MMC as object which holds state and knows how to display; its half of the book would be merely telling it to display, using so much of a page, and any changes to the state would immediately feed back in. Since drawing diagrams could be difficult, using the machine to create perfect diagrams with parts of the page is solution.
This doesn't feel like the enhancement of human ability I first thought it would be, so I considered purely labor-saving systems: building a book index trivially is an example. This index would be the list of all pages every word is in, blacklisting words in sets which shouldn't be collected, such as articles or pronouns, and with whitelisting giving special attention to words not in the dictionary. This would build up over time into a nice automatic system, once a writer has spent some effort with its organization. The simple set intersection and whatnot would be those obvious algorithms to use.
Communication with other systems would be achieved through the ability to vomit forth other formats, with PostScript coming to mind, in particular. It should be possible, by my vague understanding, to have much smaller PostScript through using the dictionary, while still maintaining transparent text.
It's important such systems for creative endeavour be customizable in ways that don't favor anything resembling a typical programming language or requiring anything beyond learning the system and being capable of logical thought. Even the interleaving of documents in this envisioned system could pose issues in this. The obvious answer is to have defaults for the most common cases and the ability to specify the order of that ring of documents to interleave, and this may very well handle everything, but the most general case requires some ability to provide a logical statement with which to specify such. Even this could be an unnecessary complication, based purely on my desire for simplicity; the better solution may be to avoid the need for separate documents to interleave entirely, in any form.
I wonder if I'll ever be able to create something so undeniably useful as paper, with my life. With regards to the interface of such a typesetting system, my thoughts are mired in the disgusting state of current computer interfaces. It would be easy to program an interface which has one focus on the individual word being typed, rather than following along as it's placed in its proper place in text, and this warrants experimentation, but I'm wary of it. I'm most accustomed to working with a rather bare interface, primarily window into paragraphs written, and it seems most writers use such; it may happen this is ideal, but I refuse to accept this without experimentation into what could be better.