A slight rework this evening for ongoing, most visible in the sidebar material to the left and right. The previous cut was Linux/Apache/Perl, this one adds Mysql to the mix. But the LAMP acronym comes up short, there really ought to be an X in there for XML, time for Udell to think up something. I thought it might be interesting to write up some of the design issues, but then I decided no, that wouldn't be interesting at all, so this is just to ask for feedback if I've broken anything, make a couple of general observations, and note that I now hate SQL much less.
Still Flat Files! · One technical note: Mysql may be in the picture, but that's just at publish-time; all of ongoing is still served as flat files out of a directory tree. If you can possibly arrange this, the payoffs in terms of performance and robustness are just immense. Of course, often you can't, but I'm going to hang on here as long as I can.
It Isn't Much Work · Writing your own Weblog software really isn't that hard; the whole thing can't have taken me even a week's programming time, in dribs and drabs, on weekends, evenings, and plane flights. More people should write their own, all those layouts driven by Moveable Type, Radio, Blogger and friends are starting to look a little tired and a lot like each other.
RDBMS/Tree Impedance Mismatch · Writing the code to take the metadata out of the SQL tables and generate the What and When hyperlinked tree directories was quite a bit trickier than you'd think, the code has significantly hairy spots, I think I'm probably doing something really stupid. That's OK, the next refactoring will get it.
One Visual Net Coming Up · The What and When structures are getting big enough to be a bit of work to move around in, and it's only going to get worse. My employer sells software to deal with this problem, so stand by for a neato blog navigation browser.
It's Fun! · If you're a programmer and you have a blog, like I already urged above, buckle down and write the code yourself. I've really enjoyed this, since the customer base (me) has an unusually reasonable set of requirements and the implementor (me) has an unusually good understanding of them, and it's not just wanking, people actually read this stuff...
No, You Can't Have It · ... which is why I'm not giving this code to everyone, I've already been asked several times, and if I did that it wouldn't be fun any more.
This was the first time in a while I'd done much SQL, and upon reflection I think it's silly to hate it. It looks different and stands out in your program, and well, guess what, relational tables aren't like any reasonable programming paradigm, and it's good sound design to have it look different and stand out.
Fellow W3C TAG member Dave Orchard has remarked on several occasions that whenever he's tried to wrap up SQL, for example in Java classes and interfaces, performance went right to shit, and it's silly to pretend that a normalized table with SQL retrieval semantics is anything but just that.
Finally, when I actually furrowed my brow and thought a little bit, I managed to migrate quite a few lines of rather kludgy perl code into single only-moderately-complex SQL statements, which is the way it's supposed to work.