Dreaming about binry-hop Starting out, I imagined bunny hop as classifying binary images, like the MNIST handwriting recognition which is a classic machine learning task. Classification sucks though, it's not what hopfield nets are trying to do: They gradually fade whatever you gave 'em bit by bit into exactly one of their memories. So you would have to wait a long time for your classifier extra bytes to give an identifiable answer. Much better would be to have an input that improves gradually by having some bits flipped. Differently, it needs to be automatic in the sense of being passive for it to be a super power that is different to just being able to program normally. This requirement has two facets; it must be programmable (a minimal lisp itself), and autonomous once started, similar to the lispusers DONZ program in interlisp. DONZ gives your shrunken windows (iconified windows in modern window manager parlance) a clock and list of interjections, so they will sporadically call out to you by name with hopefully important reminders about themselves. Other lispusers programs have special defaults. The defaults are silly and on a random timer, but you can do what you want with the inputs and programs and reminder timers. Speech bubbles pop up from the shrunken windows as they chatter at you. One more consideration: I want to use a streaming approach to inputs. While reasoning about black and white images, it occured to me that instead of working on entire 64x64 images at once, I could layer my net, and stream through considering 8x64 bands of the image (with 8x64 memories), and then afterwards reason across the bands, maybe a subregion of the bands. Now we can identify these 8x64 bands with ~ lines of ASCII text in common lisp since 8x64/7 ~ 73 characters of ascii (one short line) or single names in interlisp since 8x64/16 = 32 interlisp characters (*IIRC* interlisp uses 16 bits: 8 bits to specify a characterset, and then 8 bits to specify a character in that characterset for characters, since in general many non-ascii characters are supported. This is the size of a name that you would write, such as a variable name. So. So so so so. Up to here I think I have enough equipment to use bunny hop to reimplement interlisp's do-what-i-mean's spellcheck in a quirky way, which I am naming do-what-I-hop. One application of interlisp DWIM is spell-checking, so I could write <- (lis 1 2) lis (in EVAL) -> LIST ? yes (1 2) (Where yes is a single tap of y) In 7 bit ascii, this spelling mistake is like this (2uppering for brevity): Input: 1001100100100110100110000000 Memory:1001100100100110100111010100 ; Aside: (loop for ch across "LIST" do (format t "~2,7,'0r" (char-code ch))) What I'm imagining for do-what-I-hop is to passively converge entered names to memories in the background while the line is being entered. NB : DWIM is not a spellcheck per se. It's interlisp's facility for defining comprehension of different language rules (such as to fuzzily check entered text against names in present packages). For example FOR loops, and record accesses are implemented having special rules using DWIM. But passive memory-based autocorrect is one starting point for me. From which if I have lists of automatched lisp names, that's enough for the evalqt to eval me some lisp, whether a small separate lisp, or interlisp/common lisp as such. I was going to write about how I'm envisaging streams and copied streams and concatenated copies of streams working, but this stream of consciousness has gone on for some time already now. * In for a penny - jotting a second idea A way to match lines of code I am currently writing against memories codes I have written before (yes I am writing codes deliberately for Martin) in another alternate-universe DWIM way. Imagine I have previously written (in CL) (reduce (lambda (a b) (concatenate 'string a b)) (maplist 'car *my-strings*)) ; please ignore my bad style in applying reduce and maplist here In order to try and recognise this as a memory, I am imagining separating the leaf structure from the names, and then do-what-i-hopping each of those separately. So the above reduce would be stored in two networks as (i) the leaf locations (t (t (t t) (t t t t)) (t t t)) and (ii) the names (reduce lambda a b concatenate 'string a b maplist 'car *my-strings*) With the goal of the ai recognising- oh. We're doing this again later. Using do-what-I-mean cleverness on the names (and maybe cross-referencing them to function / value cell meanings from the leaf locations and other cleverness). I think this is a powerful and small (sm0l) ai to extrapolate forward lines of code being written. Proof of course being in the pudding... 1) Bunny hop migration into interlisp (since I'm twiddling bits, and I think Paolo fortuitously published a package twiddling bits in interlisp) 2) do-what-i-hop spellcheck edition 3) do-what-i-hop leaf-by-niggle edition * (Aside from having the word leaf, this one of Tolkien's books isn't an appropriate reference here. Well, if you try hard enough anything can be believed.)