I have a variable loader that I can use in scripts/programs so that I don't have to hardcode filepaths and so I can change settings quickly. Variables can refer to other variables, even in parts of them. I can quickly insert references to those variables into scripts/programs with a shortcut key.
There is a note taker: a shortcut key immediately opens a blank file (which is named the date + time + a short unique ID to avoid any clashes).
There is also a note reviewer: It shows the next note to refine. I can postpone any that are uninteresting yet incomplete for whatever duration, and archive any which are complete and can show up as relevant matches elsewhere in my system. This stage allows me to deal with bits and pieces at a time, and review things I'm still working on. It avoids hierarchical constraints on purpose, and it breaks things down into tags instead.
I have a sort of data representation in which I can note how things/concepts are linked, and also express doubt, references, references to references and so on, to allow expressive representations of thoughts including incompleteness or ambiguity.
I have a music player that devalues a track every time it is not played in its entirety. The faster it gets skipped the more it gets devalued (and there are meta keys to add more weight). If a track's rank doesn't meet a random threshold then it gets skipped. It basically stops the listener getting too used to a track even though they may like it.