It Begins

I've recently decided that I would like to start blogging. This is for a couple of reasons:

  1. Giving Back I have benefited immensely from blogs and websites where individuals who have suffered through difficult technical travails have shared the minutia of their suffering and saved me countless hours similar suffering.
  2. Self reflection I have noticed a lack of self reflection in my day to day work. I hope a more disciplined approach to writing will help me to be more thoughtful about the work choices I make. I often feel overwhelmed by the processes I implement to manage the various papers, classes, projects, research and software I work on. I am hoping that by writing out clear goals for these various elements I will be able to better assess my progress and pivot when things aren't working.
  3. Because I should Sacha Chua is the last in a long line of individuals that I respect who have recommended writing daily to improve my communication skills. As a burgeoning researcher I am (begrudgingly) starting to accept that I will need more skills than just software development to be successful.

It gets technical

I manage most of my life in Org Mode which is a mode of the text editor Emacs. Org Mode (with contributions) is a whopping 136,000+ lines of Emacs Lisp. It is really an application all in its own, I use it to organize my classes, my research, my software and personal life. I'm pleased to say I am also using it to write this blog. Along with a friend I am working on developing a small Org Mode export library for the Pelican static website generator. The code is available here. At the time of writing this blog there is just a small minimum viable product.

Why roll my own?

There are a bunch of great libraries out there already not the least of which is the Org Publish workflow for exporting from your org files to your hierarchical text format of choice. Unfortunately none of these met my goals:

  1. Manage all posts and pages from a single Org Mode file.
    • This might end up being a bottle neck if I end up with thousands of posts (burn that bridge when we get there)
  2. Separate concerns
    • Org Mode is for managing content, Pelican is for publishing to the web.
  3. Relatively light weight,
    • Do common tasks well
    • Edge cases should be handled by hand
  4. Pelican should be completely unaware that Org Mode and Emacs are involved.
  5. Manage pelican post meta-data from the Org Mode property drawer.
  6. Integrate into the org export workflow as much as possible.

Possible problems

There are a few areas where this might fall flat on its face:

  1. Org Mode can export files to pelican's content directory but it can't clean up without keeping track of what it has exported. There are ways around this but it could get heavy very quickly.
  2. If there are lots of posts (over 1000?) in a single file we may have performance issues.