Foliage released

Foliage is a static web site generator pretty much like Octopress/Jekyll. Instead of being a tool you invoke from the commandline foliage is meant to be a library to create a customized web site with a script. The script can then be used to invoke foliage headless on a commandline. The basic idea of foliage is to reify all structures of the web site from filesystem hierarchy down to the HTML DOM. Every structure should accessible, modifiable to enable the creation of very flexible setups.

The name foliage most probably is caused by the german language. In german the wo...

Blog navigation

Last time I've added a page header and a page title to the rendering so the site can be navigated in a basic fashion. Adding those was possible because I added a render context that enables the rendering process to access more information it needs for rendering. The header works well for global navigation but I wanted to add a way to navigate between the blog articles.

At the moment we have a helper for creating a blog overview page. But the blog is an important entity on this site so I added a dedicated class to reify that. We use the new class in the build process like this


A render context for a header

The last milestone improved the blog generation situation significantly. A model on which I can operate has certain advantages I do not want to miss. After writing the article I refactored the website model a bit further to separate reading from disk and model objects more. There is no microdown page in the model anymore because it is converted to pillar and that should be the central page model.

With the new model I can generate dynamic content and place it somewhere in the site. But I still lack navigation support to make the pages reachable. Until now there is...

A website model

After the last milestone of creating this blog I've chosen a simple approach of page generation. Files in a raw/ folder are recursed and produced directly into the output directory as HTML. This is straightforward but not what is helpful in the long run. I want this library to be flexible and extensible.

As an object oriented programmer what do we do if we want to manage and modify things? We reify them so they can acquire meaning and we put them together into a model to define their interactions. Just like you would create a story (and you always should!).

What we need as a s...

On to #2

Writing the second page is especially exciting if it is about rendering the first page. The first markdown document is present but how to put it on the web? Step by step...

Sketching the basic process to render a page I use the simplest markdown possible.

 # Hello

 Some text to form a paragraph

In pharo we just put this in a file called and the rest can be done from the playground.


Microdown is a pharo implementation of a markdown parser that uses a subset of markdown. Markdown is a nice format from the perspective of writing, it can be read as ASCII as well as it can be rend...

Nothing new

This is one of the articles I have written quite a few times in my life. It is the first one to start a blog. So it means a few years have past and I feel the need for a new blog. Well, every single time that I do this it is less about writing articles than to play with a new blog software. Nothing new this time. It is a new software and it is written by myself as mostly. One of the reasons is because I'm not so much a good writer than I'm a software developer.

The interesting part this time is that the blog software does not exist, yet. Creating this blog is actually about findin...