My transition to emacs
that started quite a while ago, by this time
is terminal and irreversible. It's not either mere editor of choice,
nor even a "ten times better bash
than bash
". After some time spent
with the community around emacs
, I was inspired by its most devoted
members who advocate doing just everything within this
interactive environment. The only thing that was missing - an
inter-connection tool suited to interlink the projects and notes with
little extra effort. But that also came in soon.
The cornerstone for me was the discovery of org-roam.
Apart from being a handy Roam Research replica for personal
Zettelkasten / knowledgebase (of which there is a ton of projects
already), emacs-widely org-roam
also provides a very useful node
structure. Essentially, org-roam-node
is an abstraction over Org
files and headings that treats them as similar entry objects.
That is the thing one may be missing in vanilla Org the most.
Attempts to add such functionality are made in various add-ons to Org
(e.g. my previous bus stop: org-brain). However, org-roam
beats
them all in usability: paired with local database (obvious next step
to build a slip-box system out of Org), not dictating its own
hierarchy of files and notes (important for me),
appearing with plenty of it's own bells, whistles and extensions.
Even with its own fan-base :)
Myself I find org-roam
a solid base to build upon in further
Org-extending projects - dealing directly with org's parsers is way
more cumbersome. And at the moment I organize my creative process
entirely in Roam, wrapped up in a literate style within org-mode
+
org-babel
. The Siege Tower is built within org-roam
too, and its
engine package code is one of the sections of the Tower.
In essence, the Siege Tower is more than a blog... or maybe less?
Because it does not have its pages stored separately but extracts them
directly from my Org-Roam knowledge base. The approach I use declares
how to filter a set of pages (an index
) from Roam and how to output
it along with its individual entries. This way the overhead needed to
publish the stuff from my personal roam wiki is minimal compared to
the time and effort of the actual work on a project. And the style of
the output is under control as well - it is decoupled from the actual
entry structure and location within Roam as, in "adult MVC/MVT CMS"
systems.
I had fun developing the engine for the Tower in elisp
. The
org-roam-blog
, as I call it (expanding the prefix as there are
other, more mature emacs package candidates that have orb
in their
title), is in fact quite simple.
mustache.el is used primarily for templates: logic-less and
concise - I like them! orgize rust library interfaced as dynamic
module for elisp serves as faster HTMLizer than org's native exporter.
Other few libraries I use are well-known collections of extra handy
definitions for elisp (f.el
, ht.el
, ...).
Add up some clever CSS generation - and the result is eye-pleasing.
At least for me.
Last but not least - the Siege Tower blog is a totally, 100% static set of pages. So by design, it can be served anywhere, by anything that serves.