No problem is too small or too trivial if we can really do something about it.

Richard Feynman in a letter, "What Problems to Solve".

The title of this post is riffing off a post from Ryan Tomayko entitled "I Hate This Place". Unlike Ryan, I couldn't be happier to have built my own little blogging framework. I look forward to using and maintaining this giant mess of crap that is (more or less) all my own. It was all made possible by the work of Christian Johansen and Magnar Sveen with my modifications to turn the code for generating static sites into code for the blog. I had been using Octopress and I have to admit a certain fear everytime I had to actually generate and deploy it. One day a post that I had clearly marked as published: false got published and I was infuriated. I immediately brought down and started looking around for other solutions. I was happy when I ran into Christian's post Building Static Sites in Clojure

So what was so great about reinventing the wheel?

  1. Having a side project that was actually a project, not just a bit of code that I was futzing with. There were some of the usual constraints that face larger software projects. Days were passing by with throwing 404 Not Found. There was a time constraint. I had a chip on my shoudler about doing something better than Octopress. There was a code complexity constraint. I didn't want too much crappy code.

  2. Learning about web development. Christian Johansen and Magnar's code introduced me to the notion of a static site as a hash map: URI -> HTML. With this in place, you can choose whether you want to wrap the HTML values in response objects1, passing them to your favorite web server framework for dynamic reloading. Or, whether you want to have some code transform the map entries into directories and files for static serving. Christian and Magnar set things up so that you can serve up the HTML dynamically while developing or writing to be more interactive. Then when you're done, you can "compile" the blog down to files and "deploy" (i.e. copy) them to wherever.

  3. Getting back to Clojure. It was fun building on Christian and Magnar's code. It was a pleasure to use Light Table and I got to know the midje testing framework which I had never used before.

I wouldn't've learned as much, nor would have had as much fun if I had used WordPress, Tumblr, or Octopress. Octopress a blogging framework for hackers? Yeah right. More like a blogging framework for configurers! Okay, done trolling. Does my blog have integrations for Twitter, Github, or Facebook? Nope. Comments? Not yet? RSS feed?! Another no. But, strange as this may sound, I'm looking forward to taking the time to build out some of these things myself. I never thought much about what an RSS feed actually was...

If you are a programmer and have a blog, consider maintaining one which is bleeding edge.

[1] If you are using ring this is as easy as wrapping the response in a hash map representing the response and then passing it to the ring framework)