teod/dbx: a toolkit for building your own personal knowledge base

..

THIS SOFTWARE DOES NOT YET EXIST

Idea: split https://play.teod.eu/play.clj into something reusable (dbx) and something specific (play.teod.eu).

I believe dbx can help Scicloj make Clojure data science more accessible. There are some ideas in Scicloj is awesome. See also Scicloj libraries and tools.

Pieces:

Process:

Design is the art of tastefully narrowing the distance between elegant, ergonomic, general tools and effective application in specific context. (left is unnamed, right is Utility is Contextual) (see also The Beginning of Infinity, which heavily influenced this statement)

Influences:

  1. Roam Research & similar tools
    1. Logseq
    2. Anagora
  2. Wikipedia
  3. Babashka
  4. FZF
  5. Emacs
    1. Org-mode
    2. Org-Roam
    3. Embark
  6. Clojure & Rich Hickey
    1. “to design is to decomplect”
    2. “decomplecting knowledge”

2022-09-25

I started writing (a lot) about dbx in Teodor’s public journal. It’s better here. So I’m moving it here.

dbx and bink is the same thing

Context.

Bink: Bookmarks are just data is “given a list of bookmarks as data, please let me navigate”.

eu.teod/dbx: a toolkit for building your own personal knowledge base is “given a mechanism of pages as data, please let me create new pages and create links to stuff I’ve got”

I think these two are the same thing.

Just with a default.

dbx workon play.teod.eu
dbx workon scicloj-kb

CLI comands:

dbx nav - first select provider, then paste a link.

dbx van - link to anything from the command line.

dbx providers:

play.teod.eu/localhost - local http preview

play.teod.eu/localfolder - local folder

play.teod.eu/web - on the internet

actions:

print - paste the path

open - open in a browser.

cd - given a shell wrapper, cd into the thing.

(then there needs to be a dbx shell wrapper)

(then perhaps support installation both as shell function (dbx) and installation as babashka script? (dbxx))

How to get shell wrapper talking nicely to binary?

approach: binary returns action

approach: dbx-cd is a shell function, dbx is the binary. dbx-cd simply runs dbx and “cds” into the result.

I can implement my github project listing things in terms of dbx-cd and dbx.

I also want to ask Richard for his opinion on this. And Christian Duvolt.

spec: dbx-cd

  1. calls out to dbx "$@"
  2. checks the error code. If zero, cd into the target folder.

examples

open play.teod.eu page locally

$ dbx-cd
# pick play.teod.eu/localfolder
# pick open-problems
# dump path
# cd in there

open play.teod.eu page locally with explicit provider

$ dbx-cd :provider play.teod.eu/localfolder
# pick open-problems
# dump path
# cd in there

open play.teod.eu page remotely with explicit :exec:

$ dbx-cd :provider play.teod.eu/localfolder :exec firefox
# pick open-problems
# dbx picks out the URL, and looks up the "firefox" exec thing from config.
# evals some bb
# firefox opens the thing

open play.teod.eu page remotely with explicit :exec, but firefox in a new window

$ dbx-cd :provider play.teod.eu/localfolder :exec firefox-new-window
# pick open-problems
# dbx picks out the URL, and looks up the "firefox" exec thing from config.
# evals some bb
# firefox opens the thing in a new window

open iterbart - leancast

$ dbx-cd :provider play.teod.eu/localfolder
# pick open-problems
# dump path
# cd in there

note - a link provider should have a default :exec.

Override chain:

  1. :exec on as CLI param
  2. :exec on :provider config
  3. :exec from default config
  4. just paste link as string.

dbx could be an emoji selector

LOL

If i can lean on some Clojure stuff to define that stuff, that is.

workon should scope certain dbx actions

Projects should provide their own “workon” context

workon unicad workon play.teod.eu workon kb.scicloj.org workon iki

Workon context should:

  1. Provide a good default for writes - a “create page” action
  2. Narrow down for reads