The first blog I created was in raw HTML in the late 1990's. After a long hiatus, I started blogging again on Tumblr. After a while, the interface to Tumblr started to feel inefficient and limiting. I discovered static blogging tools and decided to try them out. Since I write many things in markdown, a tool that allowed that was the natural choice. Also I wanted something that was written in Python, my current language of choice. I ended up choosing Pelican based on python, simplicity, and the size of the community. Once you set it up, you can simply add markdown files with metadata in a header and then render your website. It takes a few seconds with the provided makefile. As far as the styling, I use pelican-bootstrap3 which creates a simple black and white layout out of the box.

Often I want to communicate a computation. I use the Jupyter Notebook (formerly IPython) as a digital laboratory notebook, allowing me to interleave data, code, explanations, and results in the same document. Since the Jupyter notebook can easily be rendered to HTML, it is a natural choice for publishing results online. Currently, I am using pelican-ipynb as the pelican plugin to publish these notebooks on my blog. Since the Jupyter notebook is essentially a JSON document, you can add some entries for the metadata that Pelican requires and publish the notebooks.

What this all buys me is both technical and aesthetic. I don't have to worry about a painful migration if I want to move hosting companies. All the posts are on my local computer as plain text. I still have some old posts on Tumblr that will require a little bit of effort to extract. The other benefit of using this platform is that it gives me an opportunity to practice coding skills on occasion so that they don't atrophy. Occasionally this is more work than a GUI-based platform, but it is work that can benefit my other technical tasks. It did take a while to create this toolchain, so I hope this post can help someone quickly find a set of tools to get them publishing their own work.