Why do so many programmers insist upon writing complex software? One example of something that shouldn't exist is the Content Management System. Why put into a database that which would be kept better on the file system? And, why put onto the web code that is hack-able, when one could instead only serve static pages? These ideas led me to create Bloggen: a static site generator that mostly gets out of the person's way.


Preferences screen

Bloggen was written in Objective-C targeting Cocoa on Macintosh systems of the Lion era, but utilizes command-line tools shipped with the operating system that transfer files. It utilizes file system attributes to tag posts and assemble an Atom feed: post title (file name), timestamp (last modification time), and body (Markdown, HTML, RTF, DOC, or text) are some examples.

The look and feel of a blog is configurable through a template system that utilizes plain files behind a MacOS archive format.

Posts may be uploaded to a server of the user's choosing via S3, SSH, rsync, or FTP. The S3 bit was tricky to write, because in those days there weren't any libraries that would help, so I had to learn about token authentication on a much deeper level.


I used Bloggen as a vehicle when I was learning to write OS X code. I designed the application around the OSX sandbox, which requires the user to explicitly cast permission to accessible directories (where the blog is). The sandbox is where HTML files are staged. This also leveraged OSX resource bundles, in order to ship the theme files. These gave the application an easy way of recognizing themes, and a user can doubleclick on a theme file to import it.

Because I wanted to put a lot of polish, I designed an icon and created all the associated imagery.

The code for Bloggen is available here. An example of a site generated with Bloggen is Cookies and Capacitors (where I used to write things).

Go home