My webspace only supports FTP uploads, with no dynamic scripting languages or anything like that, but I still wanted to write a blog (with an RSS feed), and I wanted to be in full control of its appearance, and of the data so that I can migrate to a different solution in the future if I want. I couldn't find any software on the web that suited my purposes, so after a little bit of messing around I came up with a home-grown solution: DIYBlog (meaning Do-it-yourself blog).
DIYBlog is Free Software, released under the Gnu GPL. See the file COPYING.txt for details.
DIYBlog consists of 2 different pieces of code: an optional jEdit macro, and a Python script. The idea is that you write your blog in simple RSS, that looks like this:
<item> <title>RSS working?</title> <pubDate>Mon, 13 June 2005 17:17:00</pubDate> <description><p>I think I've managed to work out a system to make RSS work. Basically I write my blog entries into a raw RSS file, and then run a little Python script to add ids, links etc. and generate an HTML page from that. It's been a hassle to write (mainly due to timezones, which I've now decided to ignore) and if anyone's interested in some highly-customisable blogging software that only requires FTP on your web host, get in touch, especially if you're the kind of person who thinks its cool to hand-code your RSS.</p></description> </item>
(Plus a little bit of extra stuff at the beginning to give the title of the blog, your name etc.) The jEdit macro just creates a little template, filling in today's date for you, and putting your cursor in the middle of the title tags, ready for you to start typing. I have the macro bound to the Ctrl-B key, so to write a new blog entry I just press that and start typing.
When you've finished writing your blog entry, simply run the Python script and it will add some tags to your RSS (guid and link tags for any entries missing them), and also generate an HTML page containing your blog entries.
To alter the appearance of your blog, simply modify the HTML template that is used to generate the HTML page.