Welcome to the new layout of this blog. Over the last year we have migrated from a Tumblr-based blogging platform to a static site, generated via Jekyll. One beauty of Jekyll is that it generates plain-old HTML and CSS. CSS, of course, can be used to create any number of styles for a blog. There are many beautiful themes available and you can see examples of what you can easily accomplish at the site Jekyll Themes. You can use one of these themes as-is or use them as inspiration for creating your own theme.
One driving reason for the move to Jekyll was the clumsiness of the Tumblr editor. Tumblr’s strong suit is GIFs and other images, not text. It was difficult, without a lot of painstaking fiddling to get the layout of a post to look just right. In particular, Tumblr’s support for code excerpts is poor and the transition from the Tumblr editor to a finished post was always unpredictable.
Another motivating factor was our desire to self-host our blog. Using a static site generator means that we have many options for self-hosting, whether in our own data center or on any of the numerous cloud platform providers. A static site typically costs much less than a dynamic Web site.
Jekyll’s native markup is Markdown, which is also what GitHub uses by default for READMEs and similar project documentation. In fact, GitHub Pages, the blogging platform that uses GitHub repositories for hosting, is itself powered by Jekyll. Thus, creating a new post is a simple matter of creating a plain-text file in Markdown format.
Creating new posts was therefore an easy lift with Jekyll, but what about all our previous Tumblr posts? Fortunately, Jekyll provides a helpful jekyll-import utility for just that purpose (see the Ruby source).
Once we imported all our previous posts, we needed to make only minor manual tweaks to make the Tumblr posts look as we wanted.
We realized that because Jekyll generates just HTML and CSS that we could create a publishing pipeline by incorporating and extending our build and deploy process. That process is based on Gradle and Jenkins. A future post will discuss the full cycle from authoring to publishing using these tools.