Building a castle in the sand
After writing on my blog that I' writing my own blogging software, and saying it out loud to a couple of friends, I realized how stupid that sounds. What do I want from a blogging tool, anyway?
- Tagging
- Use Markdown for formatting
- Keep a copy locally
Looking at that, I decided that WordPress with the Squible plugin (which includes TagWarrior, plugin to give WordPress tagging) and a WordPress plugin would get me most of the way there. I could write a script to keep local copies, or even try using Ecto again.
I've got too many projects to be futzing around with that king of stuff. Better to spend my precious evenings writing, taking pictures, soldering, nearly anything. So I made some test blogs and played around with it. After a bit I got the tagging working. It wasn't particularly elegant or simple, but it worked. Tagging in WordPress is kind of a hack, because WordPress supports categories, but not tags, and the tagging plugin is manipulating the categories to simulate tags, or something like that. I never did figure it out completely.
I also didn't like the look of the blog. Squible does too much, trying to pull in my Flickr photos and what tunes I'm listening to and my del.icio.us links, and who knows what else. Now, I love Flickr and del.icio.us, but right now I don't want all that stuff in my blog. It gets too cluttered and I want to focus on writing.
I remembered another requirement:
- Syndication with Atom 1.0
And WordPress doesn't support Atom natively. I can't remember if there's a plugin, but I remember reading tha the WordPress developers don't particularly like Atom, so support might be a bit iffy.
By now I was feeling like I used to with Zope: I have to turn off so much of the machinery to get it to what I want (simple), that I feel I'd be better off starting from scratch. Even once I turn off the stuff I don't want, it's still there, making simple tasks more complicated. How many templates do I need to change to effect a change? What is the rhyme or reason to those templates? How much style is in the templates vs. the stylesheets? And it was so slow, which was part of the problem with Blogger (and ManilaSites before that) that I was trying to move things to my own server to solve.
Chalk up another requirement:
- Must be FAST!
The thing is, I don't need plugins or flavours or options or most of the stuff that goes into a general purpose tool. I have specific needs, and software which meets those specific needs is going to fit me better than software which tries to be all things for all people. I don't want RSS support, Atom is the only syndication standard and it's the only one I need. Don't get me started on the RSS 1.0 vs. RSS 2.0. Or on PHP (shudder).
Add another requirement:
- Simple, making up in usability what it lacks in options and customizations
Not a requirement, but a strong desire:
- Implemented in Python
Some important non-requirements:
- Search (don't need it--use Google)
- Login (I'm the only writer on my blog for now)
- Comments (I've had a handful of useful comments on my blog and a whole lotta spam to kill--I'd rather expose my email)
- Trackback (ditto)
- Through-the-web editing and management (don't need it, I have a laptop and am not afraid to use it)
- Weblog pinging (don't care, syndication feeds should be enough)
By now you must see where this is going. Building a weblog system takes a lot of background knowledge: HTML, CSS, a bit of programming, knowlege about tradeoffs (flat files vs. databases). It's good that things like Blogger and WordPress exist. Not everyone can write their own custom weblog. I'm still not entirely convinced it was a good idea to take it on myself. But it's a done deal now, because I've written it.
Sandcastle
There are still some rough edges. It has a command-line version and a GUI version. The GUI is written in Cocoa, so it only runs on OS X, which is OK, because that's what I use. Some bits were more complicated than I anticipated, which is always the case. It's about 1200 lines of code, or 3000 words, including the GUI, the command-line utilities, the templates (Cheetah), the CSS, the setup file to build the GUI, and a utility to help me import my old posts from Blogger.
So far I'm happy. There are things I still want to add, but the great thing is, it's simple enough that I can add them. Later.
[Permalink] Posted on 2006-05-02 by Dethe Elza