Experience with Sinatra, and some thinking, has caused us to look at a shift in approach. Martin Fowler was probably right.
Early in this project, Martin wrote to me, asking "why dynamic" and offering his bliki software for my use. My answers were that to get my hands dirty, I really wanted to do it myself, and that I chose dynamic solely on the principle of late binding. I've somewhat come to my senses.
I am a very old person, which I hope is not in any way noticeable, despite my desire that you all keep off my lawn. I came to realize that while I hope I'll be writing and drawing stupid pictures for a long time, I will probably not be wanting to fiddle with configuring Ruby/Sinatra/Kramdown/etc on my web site for very long at all. In fact, I already don't want to do that. I also don't want to maintain the WordPress stuff that is there now, especially since my webmistress (not as interesting as it sounds) is leaving the area.
Therefore, I decided that I wanted a static site. Some software now, to generate it, but push come to shove you can push new articles up with FTP or similar tools, so it will be relatively maintainable ad infinitum.
(I freely grant that I could be entirely wrong about all this. Nonetheless, static is hopefully here to stay.)
So, a bit of looking and we've settled on Jekyll as a basis for the site. In second place, Middleman, which I rejected on the basis of its (non-) documentation. In third place, just code it up. Code it up is running strongly and could catch the leaders.
Starting on ronjeffries.com
Happens I own ronjeffries.com. (No, don't bother to buy up all the other ronjeffries.etc, and sell them to me at a profit. Dot com will do me just fine.)
So the current plan is to build up ronjeffries.com incrementally. We'll deploy it as soon as my host can get it set up. He's a bit overwhelmed with personal matters just now but I want to stick with him.
The site wants to integrate XProgramming, new material, maybe even my tumblr. So it needs to be able to support something not unlike the current organization. All the articles (at least the ones I decide to keep), and a bit of organization, done with categories in WP.
Jekyll doesn't quite want to do all that, at least not at first glance. Let's revisit the requirements.
My existing site has the notion of general articles and three special kinds: Kate, Beyond, and Classic. The front page shows the most recent Beyond, the most recent Kate, a random Classic, and then, after that row, the five or six most recent other articles. I think I've mentioned in previous articles that those groupings may not be quite right, but the basic idea applies.
Jekyll, it seems, is "blog aware". What that means in practice seems to be that much of its capability revolves around having a list of posts named 2014-10-11-foobar, and laying them out in a typical blog style. Next/prev, dated indexes, and the like. All very well and good but not quite what I'm about.
I write a bunch of articles about generally Agile topics. Those ought to be some kind of category, perhaps the Beyond heading, perhaps not. There might be threads. I write series of coding things like the recent ones with Codea. These generally don't go anywhere, they just display how I'm approaching developing something over the period where I play with things. (I should probably say at the beginning of each of those that it will not have a nice live happy ever after ending, because when I get bored with that tool or topic, I'll stop.)
I write Kate Oneal stories. I write other themed things.
Each of these needs an index page, and some of the lists are long and courtesy suggests the index should be paged.
And I have a writing requirement, or at least writing desire, which is to put each article and its associated pictures in its own folder. This makes writing easier (currently using Sublime Text and Marked) because I can view what it looks like as I go, and can push it up without worrying about name overlap in an images folder.
I plan to have the article "slug" (which I guess means web-compatible name) be the name of the folder, and in a great concession, I am prepared to name all the articles index.markdown, each in its own folder. I'd rather give them a meaningful name but at least right now I'm not seeing quite how to make that happen in Jekyll.
And I really don't want to call them all 2014-10-11-whatever, though perhaps I need to get over it.
What's there and what's apparently not
It's early days with Jekyll, we just talked about it via email a tiny bit last week, read some stuff, and I tried some things yesterday. Here's what I think I have learned.
Jekyll will scan your whole input folder structure and process files you tell it to, and will process any file that starts with some YAML. It digs down through nested folders at least as well as I need it to.
But inside the standard _posts folder, it will only process files with the date prefix format, as far as I can tell. That is, a file containing YAML but not named by the date standard, gets ignored entirely. It's not even copied over raw. In other folders, Jekyll processes the text files and copies others such as images. So inside posts, I'd be stuck with the dated names. I really don't want to go there.
In other folders than _posts, it processes most everything, so I can put all my articles under, say "Articles" and they'll all get run through kramdown and rendered to html. They can have categories, and other goodies in the YAML, so maybe a flat structure would be enough.
And there are "collections" in Jekyll. They are red-flagged with markers saying they might change. What seems to maybe happen (based on a limited experiment) is that you can name a collection in your config, then have a folder of that name, and everything inside it goes into the collection. Then you can process that collection in your templates and includes.
Where are we?
We're in very early days in Jekyll, just finding our way. Today will be our first day pairing with it. Should we just use categories or the like to sort out the Kates from the Beyonds? Should we use collections?
We're not sure. I'll report more when I know more. Meanwhile, if you know stuff I should know about Jekyll, please drop me an email. Thanks!