Slides: Build your own little memex with babashka.pdf. Originally presented on babashka-conf, 2023-07-10.
Intended usage: keep this companion next to the recording or the slides PDF.
Big thanks (incomplete list): Visakan Veerasamy, David Deutsch, Rich Hickey, Ted Nelson, Tim Berners Lee, Ward Cunningham, Niklas Luhman, Sindre, Tore, Steinar Barstad, Michiel Borkent, Jack Rusher, Martin Kavalar, Daniel Slutsky, Alex Miller, Christian Johansen, Erik Assum, Magnar Sveen, Henrik Lissner, Conor White-Sullivan, Jessica Kerr, babashka-conf organizers.
[interlude] List of good things (subjective). (1) Knowing where your ideas come from. Influences, references. ⚓
Build your own little memex with Babashka. Teodor Heggelund. https://teod.eu, @teodorlu.
References + slides are right here; you’re looking at them!.
Today: (PART 1) What is a memex? A brief history of ideas. (PART 2) How to build your own little memex with Babashka. (PART 3) Memexes applied: a tool for exploration
Information capture, information storage and information retrieval. As We May Think (Vannevar Bush, 1945).
Pieces of paper linking to pieces of paper. Niklas Luhman. Slipboxes, Zettelkasten. 1952-
Virtual pieces of paper linking to other virtual pieces of paper on a computer. Ted Nelson, Hypertext, 1963.
Virtual pieces of paper linking to other virtual pieces of paper on a network describing physics experiments on a network of computers at CERN. Tim Berners Lee, 1990. HTTP and the Internet.
but, do you really want to write <!doctype html><html><head><title>Build yourself a little memex with Babashka ...
by hand?
Emerging tools for thought enable frictionless capture and frictionless linking under the label of Personal knowledge management. Org-mode (2003), TiddlyWiki (2004), Roam Research (2019?), Org-roam (2020?).
In addition to frictionless capture and frictionless linking, I want frictionless sharing and frictionless extension with code. Let’s use the web, files and Babashka to move from personal to collective knowledge management!
But the future is already here. Blogs, newsletters, Wikipedia and Clojure Deref are already memexes. Clojure deref is a memex:
memex function | clojure-deref mechanism |
---|---|
information capture | Alex Miller collects content |
information storage | https://clojure.org/news/news |
information retrieval | people read & watch content |
Prior work for a babashka memex. I started out with an Org-roam system. Org-Roam is built on Emacs and Emacs Lisp.
Then I built play.teod.eu on that Org-roam foundation. A generated makefile to build the pages. Pandoc for converting documents to HTML and resolving links to slugs. Babashka to stitch it all together. But this system is too complex and has too many dependencies. I wouldn’t recommend this architecture to others who are just starting out. Also, I want an approachable memex toolkit for non-Emacs users.
Desired memex properties (subjective):
[interlude] List of good things (subjective). (1) References. ⚓ (2) Trees. 🌲 (3) Moving water. 🌊
Memex operations:
(make-doc memex uuid slug title)
(make-link memex uuid)
(docs memex) (->html-files memex)
A memex architecture. Layers:
What I’m working on
experimental_memex/
api.clj ; ~100 lines, heavily commented
contrib.clj ; Quickly collect ideas, append-only.
; Empty, as of 2023-06-14
cli.clj ; A babashka CLI.
; Empty, as of 2023-06-14.
demo. See the old, complex system in action. The new, simple system doesn’t work yet. Contributions welcome, beta testers welcome.
[interlude] List of good things (subjective). (1) References. ⚓ (2) Trees. 🌲 (3) Moving water. 🌊 (4) Exploring your curiosity. 🤔 (5) Cultivating your taste 🖼
What are you curious about?
What’s good? What do you like?
Give it a title. Put it in your memex. Start exploring!
Want to build a babashka toolkit for building memexes together? Join
#memexes
on the Clojurians Slack! (renamed
from #little-memexes
)
This talk focused on theory building. Up next, Michiel Borkent will tackle theory and practice in growing the Babashka ecosystem.
Thank you! Organizers (Paulus, Agatha and Paulus) and sponsors (Pitch, Doctronic, Scarlet, Juxt): you made this happen. Clojure community: You’re awesome. borkdude: for infinite patience with Neil pull requests.
@teodorlu (Github), @TeodorHeggelund
(Twitter), #memexes on
the Clojurians Slack (renamed from
#little-memexes
), https://teod.eu/
Do you want to dig even deeper? Here are some threads you might take a bite of:
You probably don’t want to keep reading. The above this line, there is polish. Below this line, there is no polish. It contains earliy drafts that didn’t make it into the talk.
Demonstrate old, complicated system
Create a new page for Niklas Luhman (niklas-luhman) (workspace 2)
Refer to him as
Sociologist, worked with linked data before computers
Link to Niklas Luhman from this page
Open new, experimental system
Change visibility to public
Literature review.
Time for doing.
Key ideas.
Talk outline. Note: I expect that I’ll need to cut scope to stick to 20 minutes, but I think I’ll keep the rough 3 part outline.
Intended talk outcomes.
In May 2022, I decided that I wanted to build my own playful place on the internet. https://play.teod.eu/ was born. I wanted to trust my own choices completely, and make every decision according to my own sense of aesthetics. My previous web site had collapsed under its own weight, and could no longer build, becase of breaking changes in some packages that I used.
I had previously gotten interested in the personal knowledge management movement, primarily Roam Research. I wanted the best parts of Roam with publishing to the web. But I wanted total control. For a time, I explored exporting from Roam to HTML. But I quickly realized that while I loved using Roam’s outlining, it didn’t give me the control I wanted for the web.
A year ago, this effort felt like madness. Today, I feel like it’s one of the better decisions I’ve made in my life. Counted today, I’ve got 12900 lines of org-mode content:
$ cd ~/dev/teodorlu/play.teod.eu
$ find . -iname '*.org' | xargs cat | wc -l
12900
In comparison, my last site got less content:
$ cd ../teodorheggelund.com
$ find . -iname '*.org' | xargs cat | wc -l
1476
I sometimes quote stuff from others, and sometimes copy things around. But I’d guess about 80 % of it is words I’ve written. So something has worked out.
I want to:
applied curiosity: my motivation for writing.
charity, grace and joy: sharing my work with others, and how that’s going.
Other people are curious too! But the world is filled with too much information, so why should you add any more? And how should you share your work with others? My best bet per 2023-04-22: structure your work as narrow theories. In Clojure, we have a culture for writing narrow libraries. A narrow library solves one thing well with minimal dependencies, and minimal impact on your code. I want to argue that the same goes for knowledge. A good article presents and
TODO
copy-pasted things from other places
From Teodor’s public-personal journal, 2023-04-22
the memex is here: it is the world wide web
Done!
Q: what’s the right interface for making microtheories?
Q: what’s the right interface for making knowledge playlists?
Microtheories need to be good explanations. Examples of good explanations:
it’s worthwhile to build your own little memex
a “little memex” is your own corner of knowledge. you curate the index. you create and link your nodes. you can refer to and build on other memexes, but the act building the memex is the reward in itself.
your memex should live on the web
microtheories deserve its own URL. others should be able to leverage your little memex.
your memex is composed of microtheories and knowledge playlists
a microtheory is a bite-sided deinfition, and motivation for why it matters.
a knowledge playlist is an ordered list of microtheories.
the act of building your own little memex is to explore your curiosity and journal about your experience.
Go!
build your own little memex with babashka
yes!