⚠️ Published documentation might be lying. I am in middle of re-doing the architecture (including the public API) of cl-ownpress, and am doing docs-first test-driven development. Once I am happy with it, I will create a 1.0 release and do future releases in release branches.
⚠️ Under active development. API/architecture might change without warning.
Practically, cl-ownpress is a static site generator.
Theoretically, its primary objective is to
Give hackers the ability to publish their content while maintaining its ownership.
- Paramount Hack-ability
Tweaking isn’t sufficient. Hackers should have the freedom of extend, replace and bend the system to their will.
- Friction-free development experience
Ability to hack isn’t sufficient. Hacking experience should be pleasant.
- Content ownership
As users of the internet, we publish a lot of content on the web. It almost always end up in a walled platform, at the mercy of someone-not-you’s whims. Cl-ownpress should bring ownership of user’s published content back to user.
I am using cl-ownpress as a library to create my personal website (git repo). It allows me achieve my desired publishing workflow.
- Publish with full power of Emacs
Most of my writing happens in org-mode. I often tinker it to a great extent, to keep capturing my thoughts/experiments fluent in my computing workflow. I want to turn this liability into an asset.
Status: Done
emacs-provider allow interacting with my running Emacs instance, and run emacs-lisp. E.g I use it to:
- Publish a directory full of org files to HTML
- Publish a subset of my notes as blog-posts
while delegating the responsibility of actual org->HTML conversion to Emacs itself.
- Publish a subset of my notes on my blog
I have a fluent zettlekasten-like note-taking system for capturing my thoughts. Almost all my blog posts are edited versions of these. I want to publish notes which mature enough.
I also want to publish any linked notes, but in a “certain” way. e.g they should be published, but not listed anywhere on the blog/rss-feeds etc.
Status: In-Progress
denote-provider allow publishing notes with specific tags as blog posts. Publishing notes linked inside these notes however is pending.
- Publish my personal projects
In addition to taking ownership of where my projects’ source-code is hosted (I might switch away from Github), I want a place where I can express more about my projects. A place to document inception of an idea, its evolution, fantasies about a glorious future; things which aren’t exactly documentation.
Status: In-Progress
Right now I am publishing just one of my projects using cl-ownpress (spookfox). cl-ownpress allow me to turn live-code into documentation thanks to Emacs provider and the power of org-mode. It is a starting point, I intend to make publishing projects more powerful. A lot of love and effort goes into every project. I want the presentation of each project to be unique yet integral to my personal website.
- Publish my toots
Tooting is convenient, I want my tweets published as micro-posts on my blog until I can turn it around and start publishing my micro-blog posts on mastodon instead.
Status: TODO
- Publish discussions from other platforms
Often, a lot of value can be found in the discussions that a piece of content births on platforms like Hacker News and Reddit. I want these tracked and presented with the published content itself.
I am still debating whether the discussions themselves should also be retrieved and published along with the content.
Status: TODO
- Publish my personal growth
This is one of the trickiest, and most unclear things I want to achieve on my personal site. I am letting it stay in the back of my head and brew for now.
Status: TODO
Cl-ownpress enables building ETL pipeline meant for publishing content. It enable a very simple use-case:
- Extract data from multiple sources. e.g. from a Denote direcotry
- Transform, enhance and collect it e.g collect e.g enhance collected notes with more information
to create instances of
blog-post
- Use it to publish artifacts e.g convert
blog-post
’s to HTML+CSS+JS+Image files