Michael McDonald's Blog

A Blog Implemented in Noel

Yesterday at SuperHappyDevHouse 12 I re-implemented my personal blog with a system of Noel templates. I am quite proud of myself.

This is only blog entry #8, so I'm not exactly an experienced blogger yet. Here's why I wanted to reinvent the wheel and create my own blog system:

  • I joined TypePad, mostly because it is what Seth Godin uses. I also admire its business model.
  • I installed Movable Type. It was easy enough to install but I became intimidated when it was time to modify its templates to make the blog look like part of my website. This is a common dissonance with blogs; they are usually difficult (or impossible) to integrate into your personal website unless your blog is your personal website.
  • I'm creating a startup business (codenamed 'Dante') in which blogging will be a central feature. I've been wary of committing to anyone else's blog system/software because I plan on implementing my own, and I should start eating my own cooking ASAP.
  • I wanted to pick a project for SHDH, where I usually spend a lot of time fine-tuning Noel.
  • I asked myself what milestone was really holding Dante back (I need my own blog system, live on kelek.com as soon as possible, with permalinks). I then asked myself, several times, what is the simplest way to achieve that (use Noel!).
  • I was curious if Noel could pull it off.

I achieved in one day what I thought would take weeks of Dante development and a new kelek.com server (running a Java webapp server). Instead I implemented a blog system with:

  • about 100 lines of Noel source (mostly lots of DIVs for applying CSS)
  • 50 lines of CSS
  • a 54-line Ruby script
  • a few basic Makefiles for automation

This is my first new blog entry using this system, by creating a new file "blog8.html" which looks like this:

<BlogEntry title="$title" date="$date" link_date="$link_date" link_title="$link_title"> Yesterday at ... [HTML content here] </BlogEntry>

and then I type "make", preview the site locally, then type "make release" to rsync the files to kelek.com.

The Ruby script is the "content management system". It reads the source files, figures out how many entries there are, then creates a properly named entry page (e.g. "/blog/2006/09/10/blog_in_noel.html") for each source file, and a main index page. This is what an auto-generated entry page looks like in Noel:

<inserttag Template> <BlogPage number=8> </inserttag>

This is what the auto-generated index page looks like in Noel:

<include ../../blog/blog8.html> <include ../../blog/blog7.html> <include ../../blog/blog6.html> <include ../../blog/blog5.html> <include ../../blog/blog4.html> <include ../../blog/blog3.html> <include ../../blog/blog2.html> <include ../../blog/blog1.html>

Now I just need to auto-generate an RSS feed.

link  |   |  9/10/06 12:20pm
home  |  acting  |  blog  |  consulting  |  noel  |  contact
© 2013 Michael McDonald, . All rights reserved.