I weblog: One one year of posts in a single org file (2015)

26 Jun 2015, by Artur Malabarba. When this blog was conceived, I decided that I wanted it to be entirely contained in a single org file, and that this would also be my Emacs init file. On the blog’s very first post I explained how to implement the latter, an init file that also serves…

I weblog: One one year of posts in a single org file (2015)

My comely room mate says this plugin is terribly lustrous.

26 Jun 2015, by Artur Malabarba.

When this weblog used to be conceived, I decided that I needed it to be solely
contained in a single org file, and that this could occasionally also be my Emacs init file.
On the weblog’s very first put up I defined the technique to place in power the latter, an init
file that also serves other applications. This day, Never-ending Parentheses turns 1 one year
broken-down, and it’s time to level the broken-down, the technique to show a file into a weblog.

As is commonly the case with first birthdays, the infant has no clue of what’s
occurring, and it’s essentially exact an excuse to indulge the oldsters into praising
themselves for keeping the kid alive 12 entire months. As such, this is able to per chance merely now not be
a productive put up. Quiz no code snippets, no Emacs recordsdata, and no productiveness
pointers, as I initiate myself from my regular shackles and trail off on a tangent for a
trade. Composed, exact in case any individual else likes the premise, I’ve pushed the code to

Earlier than anything else, it goes to head without announcing that the bellow of the posts
is written in org-mode. The engine I take advantage of for exporting is a big wrapper
around ox-jekyll, and the posts are all pushed to Github and rendered by their
constructed-in Jekyll strengthen.

Why attend a weblog in a single file?

First of all because org, while you be taught its knobs and bobs, is exact undeniable
grand. Here is the total more exact since the put up contents are also in org
format, so that you’re successfully striking off one layer of distance between you and the
bellow. To illustrate, if I’d like to reschedule a put up, I exact receive it with C-c
and hit C-c C-s; whereas, if the posts were separate recordsdata, I’d need to
receive it in dired, then search recommendation from it, and then hit C-c C-s.

Here’s a diminutive inequity, nonetheless it applies all around. If I’d like to link to a
outdated put up, I receive it with C-c C-j and then transfer attend with C-u C-SPC, all
without leaving the buffer. When I explore on the posts list, the tags are listed
exact beside the title, I don’t need to start a file to search them.

Now let me be exact with you. I didn’t predict these advantages earlier than I
started the weblog, so it’s now not why I chose this advance. Rather, it used to be linked
to the truth that I needed to weblog about all these elisp snippets I had constructed
over years and gathered in my init file.

You explore, if posts were separate recordsdata I’d need to repeat the snippets to a
separate org file, and then write about them there, and then export them to
Jekyll. On this scenario, I exact know I’d at final trade some snippet (a
wholesome init file is a fluid creature) and forget to update the corresponding
org file, and the idea of leaving out-dated code mendacity around sent a relax
thru my backbone. Not to remark, this entire circulation of “init file → org put up →
jekyll put up” has one layer too many for my taste, and redundancy is an noxious I
spoil with a chainsaw.

The contrivance in which it works

First of all, here’s what I explore when Emacs starts up.


If you happen to be taught (and be conscious) the first put up, you’ll know that the accurate init file
is still of code blocks internal that init.el headline. All the pieces else is
textual bellow. Moreover, stare that final SEQ_TODO header. It specifies that headlines in
this file dangle three imaginable TODO states, TODO, READY and DONE.


Every put up is marked with one of those states, and that is what defines them.
TODO is one thing I belief on writing about; READY is, successfully, ready to put up;
and DONE is printed.

This three-states setup has several uses, primarily:

  • I’m able to review my entire history and my future time table with a custom-made agenda
    , leveraging the total positive aspects of org-agenda.
  • Every time I trade a snippet, and the headline above it is marked DONE, I’m
    at the moment reminded to update the put up (as straightforward as C-c b). So I’ll by no contrivance
    omit of date code around.
  • When Monday arrives sooner than anticipated, and I didn’t write anything unusual, I
    can teach C-c / T READY and procure an org-sparse-tree of all READY posts.


Undercover agent how lustrous that is? This file is now not exact the weblog and the init file,
it’s also the future posts queue and the “obscure solutions” list. All without needing
to withhold out manual repairs. In spite of the entirety, the headline is robotically marked DONE
when posted.

Then there are a few more advantages that arise merely from the truth we’re the usage of

  • I’m able to bodily transfer posts around with M-up/down and M-S-exact/left, to
    whatever declare makes more sense, as a replace of being constrained by alphabetical
    or historical declare of recordsdata.
  • By nesting several posts below a headline, any tags or properties utilized to
    the parent are inherited by the posts. (Killing redundancy, be conscious?)


  • The C-c C-j (org-goto) scream makes it a bound to soar around.
  • It feels more Emacsy than anything else it’s seemingly you’ll per chance per chance perhaps very successfully be ready to withhold out.

Last, nonetheless now not least

This share applies to any of the org blogging methods (now not exact my setup), nonetheless
mild, the org-export engine is intensive and heaps more so for those who know the put to
hack it (org links, in particular, are extremely versatile).

With a single C-c b, Emacs will spell-test the contents, export to Jekyll,
smooth up some links, transfer the file to the exact itemizing, dispute up
magit-spot, and even set a commit message to the abolish-ring. You presumably can
even dangle it commit and push robotically too, for those who’re rather of a thrill

Appropriate evening, and thanks for coming

Successfully, now that I’ve done monologuing, the cake is solely gone, there’s
more candy on the bottom than on the tables, and I judge I hear a toddler crying
someplace, so it’s clearly time to wind down the occasion. Thanks for finding out, and
I indicate that on the total. Thanks for commenting too. Thanks for the emails and the
tweets. Thanks for the worm experiences and the pull requests, and each other dangle of
certain interaction. This used to be a fun one year.

Oh, and thanks for coming to the occasion. Itsy-bitsy EP fully didn’t stare that
you didn’t dispute a present. (Although he could well stare next one year… exact announcing.)

comments powered by Disqus

Stutter © 2019, All rights reserved. Icons below CC3.0.

Read More
Fraction this on knowasiak.com to talk about with of us on this subjectJoin on Knowasiak.com now for those who’re now not registered but.

Ava Chan

Ava Chan

I'm a researcher at Utokyo :) and a big fan of Ava MaxBio: About: