[This is part 2]
Goal
To transfer technical information in the least painful way for the reader.
To make creating such information easier for the writer.
To figure out which tools I should be using to write with. I believe in brainstorming. I believe that it is OK to be wrong and to backtrack and to reverse your decisions, given new information based on new discoveries about your target problem space. I believe in “showing your intermediate work” (for partial marks). This article is a stream-of-consciouness pile of text that lays out my options - conclusions to come later. Hopefully, my options will become more clear once I write about them...
Conciseness and Elision
Concise + no elision = expert mode
Anti-concise + elision = learning mode
Anti-concise + no elision = reference manual, wall of detail
Allows experts to “see” new combinations, add new layers, e.g. transistors -> ICs -> CPU -> programming
Often leads to use of Greek characters in the notation, for the sake of compressing more ideas into a small space
Allows non-experts to learn in a layered fashion. The top layer must elide lots of detail, each successive layer brings more detail into focus, until the learner becomes an expert.
Is useless for learning, good as a legal reference manual
Layers
It seems to me that we need lots of layers in level 2 to smoothly transition from 2 to 1.
Writing - and programming - tends not to have many layers, due to over-linearization.
I don’t know of many tools that promote the use of layers in writing. Outlining is too one-dimensional.
Brainstorming
In songwriting, a technique for “brainstorming” that was taught to me was the idea of “bubble charts”. A big piece of paper (from a “flip chart” pad, say), starting with one bubble in the middle and shooting off into various directions.
Jumping Around
The tool Kinopio[1] comes close to allowing this kind of non-linear expression. Kinopio has the ability to jump between web pages (called “spaces”) using its “/“ notation.
Scapple[2] is the only other tool that I’ve encountered that encourages this kind of thinking. Most mindmapping software interrupts your Flow by asking silly questions, like “where do you want to save this?”. I haven’t figured out how to jump between pictures in Scapple. I now use Kinopio instead.
Programming With Layers
One of my goals for programming is to encourage the use of layers. This is hard, to near-impossible, using the standard synchronous programming languages that we have, like Python, Rust, etc.
I’ve discovered that you need to isolate software units before you can - easily - write software in layers, like in 0D[3].
Even something simple, like implementing the OSI 7-layer model is difficult using synchronous programming languages, but, is near-trivial when you can use isolated software units that send asynchronous messages between them.
See Also
References: https://guitarvydas.github.io/2024/01/06/References.html
Blog: guitarvydas.github.io
Videos: https://www.youtube.com/@programmingsimplicity2980
Discord: https://discord.gg/65YZUh6Jpq
Leanpub: [WIP] https://leanpub.com/u/paul-tarvydas
Gumroad: tarvydas.gumroad.com
Twitter: @paul_tarvydas
Bibliography
[1] Kinopio from https://kinopio.club
[2] Scapple from https://www.literatureandlatte.com/scapple/overview?gad_source=1&gbraid=0AAAAABYPNyifkFBoLxXWAyzkDdiYtodNy&gclid=CjwKCAiA1eO7BhATEiwAm0Ee-Hd0a_CJbv34H-60eI4y1Aq7u54-az8uYGW2ZqxFJWagvdT9JbDJ6BoC_aoQAvD_BwE
[3] 0D from https://github.com/guitarvydas/0D