How I Run This Blog
Published on 2015-06-28 Modified on 2015-06-28

As I write this, I'm currently creating the code to operate this blog. These are essentially my notes, a new entry, and a neat outline of things I'm creating.

This blog has a few simple ideas behind it:

With that in mind, my system is fairly simple:


My Emacs code consists of a few small functions:


'blog-new-entry visits a new file, given the name of the filename to use. It then switches the current window to the newly created buffer, and sets it as the current buffer. It does not save the current buffer by default.

Example : Suppose then I did the following:

M-x blog-new-entry <RET> test-entry .

I have blog-file-type set to ".md" and blog-entry-dir set to ~/blog/entries/ . The created entry would look something like ~/blog/entries/ and would be ready for editing.


'blog-gen-entry takes what content has been created so far and smashes it into its HTML form. We do roughly the following:

We're issuing M-x markdown-export 'temp.html' to get the initial entry. We then use Python and BS4 to smash it together to make it look like a reasonable entry. See the Python section for more details.


'blog-publish-entry is what we'll use to take the generated & formatted markup, push it into version control, and finally do any last things we need to do to get it on our web server.

We'll also have a post-commit hook in git to handle pushing/syncing up GitHub and the webserver.


I haven't quite figured out how I want to do this yet. There are some options, like Buffer that I may use. I wouldn't mind having something more Emacs-centric or command-line centric either though.

I'm also not sure what forms of social media I want to use yet. Facebook and Twitter seem like obvious choices. Maybe G+ and Tumblr too. So that's another question.

All and all, I'm not sure what I want yet. So we'll see how it goes!


To supplement the creation of the markup, I'm using Python & BeautifulSoup. The script serves two major functions:

Emacs issues out a call to said script with the following inputs to the file:

The script then handles determining what the rough created/modified dates are, adding previous entries to the document, and finally saving its work to the final product.