An atempt of a forth memex
Merge branch 'master' of git.sr.ht:~maleza/Ool
add some notes
add more links


browse  log 



You can also use your local clone with git send-email.


An atempt to create my ideal memex in retro forth


At the moment this isn't even wip. It is a mess of notes, codded ideas and speculations.

#In a nutshell

  • Every program is a literate program
  • The main interface is a visual editor
  • Ergonomics and discoverability over mnemonics
  • Empowering instead of powerfull
  • Only does what you teach and ask to do
  • Only shows what you explicity ask to see
  • Off-line first
  • No bit moves over the network unless you ask
  • Everything is persistent unless you explicitly compost it
  • Using and programming, consumming and producing are integrated in the same flow
  • Extending the UI is as simple as text editing and part of the daily use of the system
  • As few abstractions/metaphores as possible consistent through the whole sistem
  • As few features as possible
  • Infinitely extensible
  • Everything was deconstructed and renamed to create a new metaphoric landscape to allow us to tell happier stories
  • Almost everything operates on selections and selections are lists of strings
  • Themeable, of course :)


Borows some ideas from vim and the earthstar diamond and takes them to the extreme.

I'm terrible remembering commands so whant to use the keyboard as a bunch of buttons, unless while writing of course. So everything is based on phisical distribution instead of character mnemonics.

My only retrocomputing nostalgia is about a DOS based restaurant system that ran on a 286. It was slow but after a few days of work my fingers knew the whole choreography for common tasks so I was able to perform it and leave confident of the result.

I think this can free some brain for other tasks without compromising speed.

left/start    up    down    right/end    alt                ctrl
u                 i       o            p                  paragraph   block
j                  k      l             ñ                  sentence     line
m                ,        .            -                   word            char


Selection is identical to movement but with left hand. It always creates lists and its reference goes to the stack so its easy to do (execute/run) words on it. The nature of the lists it creates adapts to the size you choose to perform it.

  • If a continuous string of characters is selected with the character keys a single node list containing a string is created.
  • If a rect is selected with the same keys (like in a collumn of numbers or a row of tab separated values) a list containing an item per column/row is created.
  • and so on

This combined with filter, map and reduce creates a simple toolset that empowers the user to create their own solutions.

#Seed Bag

The seed bag (clipboard/kill-ring) ofers the usual functionality but you don't have to remember its contents, it's just another buffer and you can open it to modify its contents or select what to plant (paste).

Selections are added to it by copying or recollecting (cut).

Recollect is a word you can call everywhere over a list so it's possible, for example, to apply a reduction over a selection of numbers and recollect the result to the seed bag to plant it later.

Other use case could be to have a word that aplies citation formating to a selection and recollects it, so you can browse around creating citations for different sources and recollecting them and then create a new document and plant each one in a new context.

Search: If there is a selection every hit finds next match. If nothing is selected an overlay accepting text is shown. If the criteria is a file or a network address it gets opened in a new buffer.


Do interprets selection as forth code so its easy to create menues just listing words or interactive documents similar to notebooks in which you can select word definitions and "do" to make them available.


The plan is to base the editor in piece tables, to make undo and redo allways available and persistent between sessions.

The menu has two collumns. The one from the right takes its words from an editable text file. The left one takes its words from the first line of current file.

This allow to create document specific menus turning any document into a custom ad-hoc aplication.


You can have 8 buffers opened at the same time. Buffer 9 is the seed bag and buffer 0 is help.

Buffers have their own heap which can be saved and restored between sessions.