Charles R. Hogg III

How (not) to start a blog

I've been wanting to redo my website for a few years now.

I thought I could motivate myself by purchasing the domain name. Paying actual money -- surely that would get me moving! I learned otherwise when the one-year renewal bill came and I hadn't done a thing.

But now I do have a website (obviously). So what was stopping me before, and what changed?

Grand plans

The idea for the new site came at an exciting time in my life, when I had been voraciously reading about all kinds of new (to me) technologies.

  • markdown is lightweight, undistracting markup. Kind of like LaTeX, but without looking like tag soup.
  • knitr lets you stick snippets of R code inside a markdown document, and automatically replace them with the results of running that code.
  • mathjax finally -- finally! -- brings the power of LaTeX equations to the modern web (i.e., MathML instead of hideous rendered gifs).
  • WebGL puts plugin-free interactive 3D environments right in the browser window.
  • d3.js offers mind-blowing1 data visualization, with native vector graphics to boot!
  • mathbox.js promises a full-featured, in-browser, 3D plotting library.

I wanted it all: writing posts in lightweight R/markdown, and automatically getting beautiful, interactive, browser-native plots on the other end. It was hard to settle for anything less.

Building Rome in a day

Looking back, it's no wonder I failed. My Grand Vision was a world apart from the default nanoc page that greeted me on the (rare) occasions I tried working on my website. The chasm between them was stark, paralyzing, overpowering. I tried to get every detail straight in my mind from the beginning. It was like trying to build Rome in a day, or to eat a turkey dinner in a single bite.

Progress came only when I jettisoned most of my feature list, and concentrated on getting a small core working. This lets me practice and build familiarity; when I'm ready for more, I'll have a base to build on instead of starting from scratch.2

Right now, of the list above, only markdown (using pandoc) and mathjax are working. I don't even have a good solution for images!3 And that's fine with me: when I want them, I'll only have to figure out one thing, instead of everything.

The irony of perfectionism

Many think of perfectionists as producing excellent work. That's wrong: perfectionists produce virtually no work. Perfectionism doesn't mean high standards; it means doing things out of order. It means wasting time on details when the foundation hasn't been laid. Ironically, this leaves less time for more important work, so perfectionism actually harms the overall quality of work.

It's a great relief to get the site as far along as it is. If I have a blog post idea, I can just do it, instead of filing it away in the "list of things to write about once I make my blog".

I still plan to do most or all of the things on my list. The difference is that by doing them one at a time, and being satisfied with imperfect solutions, I actually stand a chance to get them done.


  1. See force-directed graphs, bar chart transitions with object constancy, and more.

  2. By the way, I also didn't realize how much the default nanoc page was holding me back. I spent too long tolerating its irrelevant sidebar while I tinkered with other pages. It wasn't until I finally blew it away that I realized how distracting it had been, and I was amazed how quickly I made progress once it was gone. If you're thinking of building a nanoc site, I recommend you gut the default sidebar right away.

  3. Git is notoriously bad at large files.

Page source on GitHub