- This section of expLog is an attempt at consolidating notes I've taken over the past several years, and make them easily accessible – primarily for myself, and potentially for anyone who happens to run across them. They are very definitely not polished or carefully maintained, and are a grab bag of text files collected over several years – slowly being aggregated into this website.
- It's been surprisingly fun to look at the different sets of notes I've collected;
- The Recent section is going to be unwieldy for the next few days as I continue gathering really old notes into place; such as those on Android.
- There are a lot of options and approaches for Tools for Thought: Zettelkasten, Roam Research, LogSeq, Obsidian, Notion, Quip, Building a Second Brain, Memexes, Tiddlywiki, Org Mode, Org roam, Athens, Workflowly, Gingko, Kinopio, Scapple – and of course – physical index cards.
- In general this field has been becoming significantly more popular, which in turn has worked out well for me. Instead of being limited to Org Mode and Emacs, which used to be my approach for 2013 - 2020, I now have many more options for comfortably collecting and organizing notes.
- At the same time I should warn any new enthusiasts: Slip boxes and notes work best when paired with an actual result you would like to accomplish.
- I happen to be a living and breathing caricature of the tinkerer who forgets the reason he started tinkering in the first place. Ever since I started the implementation (roughly a fortnight ago) I've spent more time working on the rendering than actually reading or writing notes.
- This is your final warning.
- I'll keep cleaning these up as I go – building my personal reference to quickly look up notes anywhere, at any time. It's definitely significantly cheaper and easier to add notes here compared to any other setup I've had that I remember.
- There are 2 parts to this slipbox:
- For actually writing and collecting notes, I rely on the web version of LogSeq across multiple laptops, and even my phone.
- The default text format is org files.
- Notes are backed up to a private repository in GitHub.
- Journals are disabled to reduce noise.
- Auto-commit is switched on whenever I remember; the app has some bugs that toggles it off.
- I maintain separate LogSeq graphs for private notes.
- For rendering this website and reading, I rely on a (now large) Python script to preprocess files, Emacs's Org HTML Export for actually publishing everything and a Github Action to generate the site and push it to the GitHub pages branch of my private repository.
- The Python Script has a few jobs (currently standing at 441 lines, including unit tests)
- Copy over all the org files to a staging directory for modification.
- Fix all the links to point to actual files: convert the LogSeq only links to Org mode
file:
links.
- Fix titles, adding them if required; and lowercasing all files to be consistent.
- Figure out the graph of connections (simply by using regular expressions).
- Add back-links to every org file (as an org-postamble), generating empty collections of back-links if required.
- Generate the index file that links to every page, and keeps a respectable 20 links to the most recently edited pages.
- Generate the background image you see attached, which shows recent edits added to the repo.
- Run emacs in batch mode on the staging directory to actually generate the site.
- Push the generated html to github.
- The emacs lisp file configures org export: skipping the preamble, adding customizations around the html that should be generated.
- It's fairly similar to the configuration I have for expLog, which is public.
- This tends to be the slowest step in the process, so I plan to fork and run multiple emacs processes in the future.
- Finally, the Github Action
- Checks out the repository – I had to make sure the checkout action clones everything, allowing me to generate the visualization.
- Installs Python, Emacs, and any python dependencies I care for (particularly orgparse).
- Runs the scripts which publish the website.
- To avoid wasting too many resources, I've configured it to run as a cron job every 4 hours; and also with
workflow_dispatch
which allows me to forcefully kickoff a run from the GitHub UI.
- There's also a "Developer mode" in the python script: it skips cloning and pushing, and instead of copying over the CSS file symlinks it. All of this helps me iterate significantly faster than otherwise.
- I have some custom code in the elisp publishing configuration as well to make it process just a subset of the files, and avoid checking for upstream packages.
- Reading the background image:
- At the right, there should be a light grey line with some tick-marks; assuming I didn't break the script yet.
- The darker grey ticks on the left indicate commits to the repository over time.
- So far it's been clusters of activity – generally programming, or porting over old notes – with dry spells where I have real work to do.
- The muted grey ticks on the right are to give a sense of time: they mark out midnight every day (UTC time).
- I expect this to look more fascinating as time passes and the graph keeps shortening; though I suspect I'll modify it significantly before a year has passed.
- If you've made it this far, I'd love to hear what you think about maintaining digital gardens, and perhaps pointers to your own! I'm available @kunalbhalla.