Pollen: Authoring with Extensible, Semantic Markup

If you have seen my previous site, you may have noticed that I have recently changed some things. In fact, this is all totally new.

Well, this site is written in Pollen. I wanted to describe my reasoning behind this, and share my experience.


Several things that bothered me about my old site. Its been a couple of years, so my memory may be somewhat faulty11. Some of these may have been solvable by using a variety of methods, especially liquid tags. It has been a long time since I worked on this, things may have changed, etc. I tried some ways of handling these issues, but none of the options were very good.:

I knew what I wanted to do: I wanted to separate the authoring from the presentation. I wanted to author my blog posts and mark them up: here’s a definition, there’s a footnote, here is a block of code that should be evaluated in a certain way, etc. With those tools I had, I did not have any good way to do this.

Excluding XML, which I mention next, nothing like this existed. I wasn’t ready to work on a project like this yet. Unfortunately, these little irritations piled up to the point where I lost interest in writing.

But, XML?

At this point, you may be thinking “well that’s what XML does!” Semantic markup is one of its stated goals. XSLT is even designed around this specific “convert from semantic markup to presentation format”.

While some people have a deep hatred of XML, I do not. But, I don’t exactly love it, either. I am at best indifferent, though I have been tempted to try writing in XML as a sort of iconoclastic rebellion. But, still, I did not want to go down the route of building a whole authoring pipeline, only to discover that I, too, hated authoring with XML.

Enter Pollen

Then, relatively recently, I discovered Pollen. I have been curious about Racket22. Really, I have loved Racket, even if it has mostly been from afar. The Racket Manifesto resonates with me very deeply. This story goes back a long time to when I was still in school, and Racket saved me from (possibly) giving up on CS. Thankfully, because of then-PLT-Scheme SICP, I did not, but this is a story for another time. for a really long time.

When I read about what pollen was designed to do, I was really excited. This tool is exactly what I want! At this point, I encourage you to check out the Pollen quick tour, to get a general idea of what it looks like.

Pollen is designed for authors to write with with semantic meaning. As soon as I saw it, I knew it was just about exactly what I wanted.

So far, I have found Pollen to be a delight. It is a little bit quirky, but I was able to wrangle it to my will after a few evenings of hacking. I have implemented some complex functionality and have satisfied myself that it is going to do what I want. I get the feeling that some day I will rewrite a lot of this in Haskell33. Specifically, I am thinking that I will end up porting the infrastructure code to Haskell. There are several things that I’d like to behave differently, and having it all in Haskell would just make things easier., but overall I am quite pleased.