This is the project website for Ode (pronounced oh-dee), a personal publishing engine for the web. Ode is unique in that it is designed to be simple – not necessarily easy.
Simple means understandable (at least it does here).
Let's say you're working on a long (or not so long) post. Maybe you're trying out Colorbox after reading the howto I posted recently, or experimenting with something else. The easiest way to make sure everything is working just right is to view it in a browser, on your site, just as it will be when you're finished with it. You could create a new post and start writing it live, but it will appear broken or incomplete before you've finished. That's probably not what you want.
With the ShyPosts addin you could append a suffix that corresponds to a shyness rule to the end of post file names while you're writing them, something like:
'__unfinished'
For example:
'new-post__unfinished.txt'
That post will not appear on your site unless requested by name:
http://example.net/cgi-bin/ode.cgi/new-post__unfinished'
(Assuming the post is at the root of the site.)
The ShyPosts addin allows you to specify posts that won't appear unless specifically requested. Shy posts won't volunteer themselves, but they will participate if called on by name. They're not hidden, they're shy.
To use the addin, you create a shyness rules file (plain text) containing a list of patterns. These rules are matched against the full path to your posts. If ANY PORTION of the rule matches the path to the post (including the post filename) then that post will be considered shy. All posts and subdirectories of a shy directory are shy.
Rules are interpreted as regular expressions (by default). So there is a lot of flexibility in specifying exactly which posts are shy.
First things first, what is Editedit?
The short answer is that it's an Ode addin that allows you to edit posts via a browser based form much like you would create an edit posts with Wordpress, update your Facebook account via the facebook.com website, or interact with twitter.com (or any number of other sites).
Before we get to Mrkdwn let's discuss Markdown on the Markdown_addin on which it is based.
Download the Mrkdwn addin (.zip)
Ode has always supported the Markdown syntax via the Markdown addin, which is included (and enabled by default) with Ode itself. That addin is no more than a very thin wrapper around the original markdown perl script (markdown.pl).
All I did was include the necessary Ode interface bits to work Markdown conversion into Ode.
For anyone who might be interested, here's what that looks like:
The accesstitletagsandbody_early interface allow addins look at and modify the content of each post by providing separate references to the posts title, tags, and body.
sub access_title_tags_and_body_early
{
$$body_ref_l = Markdown($$body_ref_l);
1;
}
The Markdown addin simply passes the body of the post (as a reference) to the Markdown routine, which handles the Markdown conversion. Not so hard to understand, right? The actual routine isn't quite this simple, but everything else is just overhead. This is really all the Markdown addin is doing.
(That $1 at before the closing curly brace let's the thing that calls the routine -ode in this case- know that everything went as expected.)
I really like Markdown and I think it does just about everything we need it to do. Sure it doesn't provide a syntax for tables, definition lists, footnotes, abbreviations, and other sorts of things, but I'm not convinced that there is a substantial benefit to expanding the syntax to do any of that.
Here is what Markdown's creator has to say about it:
Markdown is not a replacement for HTML, or even close to it. Its syntax is very small, corresponding only to a very small subset of HTML tags. The idea is not to create a syntax that makes it easier to insert HTML tags. In my opinion, HTML tags are already easy to insert. The idea for Markdown is to make it easy to read, write, and edit prose. HTML is a publishing format; Markdown is a writing format. Thus, Markdown’s formatting syntax only addresses issues that can be conveyed in plain text.
That little blurb makes a lot of sense to me. Fortunately, Markdown can be used seamlessly with HTML, so what markdown doesn't do isn't impossible - and it's not any more difficult than it would be without Markdown.
I think we should appreciate that HTML really is a pretty good markup language itself and the fact that it's so prevalent (much more so than Markdown or any of the simplified markdown syntaxes) has it's advantages when it comes to doing fancier/more structural stuff.
Having said that, and for what it's worth, between Ode's themes which separate the structure of a page from post content, and given the subset of HTML that Markdown does support, I rarely find myself writing in a way that requires me to include a lot of explicit HTML.
There are a few very specific things about Markdown that bother me after using Markdown for years.
The Indexette addin is now available.
Well it took me a longer than I thought it would to get to this, and get it finished but, the good news is that the addin is available now.
I've already described what this addin is, what it does, and why in a previous post, A preview of the Indexette addin
If you haven't read that post I invite you to do so now.
There are a few important things to understand about Indexette:
I've recently finished an addin for Ode called Indexette that I think is an important one.
Indexette is a nice example of a simple solution to an important (to this project) problem. Like Ode itself, there is nothing complicated or hard to understand about Indexette.
It's also a good demonstration of Ode's tags.
I've created a video overview of Indexette demonstrating what the addin does, and how it's used. The video is in two parts and about runs for about 10 minutes in total. If you're interested Ode, I think you'll agree it's worth seeing. If you watch the video you can skip the written instructions. (See, you don't have time not to watch.)
Jumper is a little addin which can be used to truncate posts on category pages, and automatically add a link to a dedicated page containing the complete post. I wouldn't doubt that you've used something like it with other platforms.
It supports a couple of niceties including: