Thursday, September 23, 2004

Another Milestone

I just sent the final post-copy-edited chapter of the book back to my copy editor.

My copy editor is great, and the book is a hundred times better because of her, but I'm so glad that I'm done with this part of the process.

Getting a copy of a chapter back with a thousand little notes on it about things you need to fix is just so disheartening.

I recently saw a description of the process of writing a technical book as being similar to "Having your teeth pulled out with pliers, slowly, over the course of a year". It's been a bit more than a year for me, but other than that it's about right...

Tuesday, September 21, 2004


In case I wasn't clear on it in the past, the Apache::Test perl module is just the coolest thing.

The docs on how to get it up and running if you're not building your standard everyday mod_perl module aren't exactly the best (so far I can't find a way to set things up wthout using either Apache::TestMM or Apache::TestMB, neither of which I really care about since I'm using configure + make instead of ExtUtils::MakeMaker or Module::Build, but it was easy enough to fake up an Apache::TestMB one liner to do what I need), but once you're over that part it's just so damn cool.

I've now got a test suite that automatically builds the module, configures and starts Apache, runs automated versions of the tests I was doing manually, and shuts everything down, and all I have to do is type make check.

Should have done this much earlier in the process...

Sunday, September 19, 2004

mod_speedyfeed 0.04 - Works With Stock Apache2

So version 0.04 of mod_speedyfeed just hit the net.

Here's the appropriate entry from the CHANGES file:

* Fake up a status line so we can work with versions of Apache that do not have support in the core for the 226 status code.
* Work around the weird way APR-Util's XML code treats xml:lang attributes.
* Compare namespaces as well as element names when looking for the atom:entry and atom:modified elements.
* Added a configure script and makefile.

The big deal is that first bullet point. Justin Erenkrantz was nice enough to point out that even if Apache doesn't have support for the "226 IM Used" status code you can fake it up by manually setting the status_line in the request. This means you don't need to apply a patch to Apache to make use of this module.

I've also got a version of this up and running somewhere people can access it, so feel free to play around with sending various combinations of If-Modified-Since and A-IM to and let me know what you think.

Next on the TODO list is investigating adding support for more of rfc3229, either some of the other IM values (probably range) or the ETags/If-None-Match parts of the feed IM value.

(I am, of course, an idiot, and neglected to post the link to the tarball... You can grab the new version here.)

Saturday, September 18, 2004

mod_speedyfeed 0.03

Just rolled the release tarball for mod_speedyfeed 0.03.

Quoting from the CHANGES file:

* Fix bug in parsing of A-IM header that would cause us to not work in cases where more than one IM was specified by the client.
* Switch to GenX instead of the APR-Util XML code for outputting the document.
* Various code cleanups.

The big reason for the release was the first bullet point, that was a reasonably embarassing bug. The move to GenX is part of my long term plan to stop using the APR-Util XML code, since it's got a lot of weird quirks and I'd rather have something more general anyway.

Grab the new tarball here if you're interested.

As always, comments of any sort are welcome.

Thursday, September 16, 2004

mod_speedyfeed 0.02

Ok, so like I said earlier, it only took a few hours of playing around to get the first version of mod_speedyfeed working and out the door.

Get it while it's hot:

You'll also need a patched version of Apache2 to get support for the new 226 status code, grab the patch from the Apache Bugzilla.

What does it do?

In short, it allows you to only send new entries in your Atom feeds down to the clients. The client program adds a few HTTP headers (a If-Modified-Since to tell you what the last time they got was and an A-IM that indicates you support the 'feed' IM) and things just magically work.

Best of all, the content that's sent down, while smaller, remains valid Atom XML, so no real change is needed on the client side other than sending the new headers.

All you need to do on the server side is compile and install the module, it works as a filter so any content that's served up with an application/atom+xml content type is automagically effected.

(The first release is 0.02, not 0.01, since I naturally found a show-stoppingly bad bug at the last second...)

mod_speedyfeed - RFC3229 Feed Support For Apache

So in an attempt to blow of some steam and relax a bit last night I started hacking on mod_speedyfeed, an Apache filter that implements some of the stuff Bob Wyman has been talking about for using a new "feed" instance manipulation method for rfc3229, specialized for serving up Atom feeds.

Yeah, I'm a weird guy, I code Apache modules to blow of steam, I'm willing to admit it.

The idea is that it's a filter that detects responses of an Atom content type, looks for the rfc3229 headers, and if they're there parses the XML and drops the unnecessary bits an pieces out of the feed.

So far it's not quite done, but it's showing signs of usefulness. I need to figure out a few issues regarding content length, date parsing, and then write some code to rip unnecessary entry elements out of the parsed XML, but that shouldn't take more than a few more hours over the next day or so.

And of course, by posting this I've ensured that I have to finish it or I'll sound like an idiot by talking about it to the whole internet and then not following through ;-)

Tuesday, September 14, 2004

New Thunderbird...

And it does RSS and Atom!


Grab it while it's hot.

P.S. Yes, I'm just posting this to see how a new entry looks when it shows up, why do you ask? ;-)

Thursday, September 2, 2004

It only took 6 release candidates...

After dragging it's feet for far too long APR 1.0 has been released.