The summary: I found a really cool add-on to FireFox--called "ScribeFire"--a few months ago (maybe one, maybe six) that I thought would be really cool if I could get it to post to CrazedSanity.com. Reading up on it, I found there was an API that I would have to implement (a relatively simple one) before it would work. This lead me to find a very important shortcoming in one of the XML libraries that I use, which turned into a massive spiral of finding bugs that caused bugs which affected bugs of other bugs... like a garden gone awry.
Warning: stuff below here might get a bit too geeky for most people's tastes....
Finding ScribeFire lead me to a list of different APIs that it supports. Since one of the main goals of my blogger was to allow posting to multiple different blogs all at once (from CrazedSanity, of course) so it makes my life and the lives of others easier, supporting these APIs is very important. So I found this list of APIs, which lead me to researching one in particular, the "MetaWeblog API"--it seems as though it is old and most places don't like supporting it, but it also seems like one of those things that must be supported. You know, like supporting Microsoft Office '97 file formats, even though that was well over a decade ago? Yeah, one of those.
So, after spending far too long trying to figure out what the XML looks like in the MetaWeblog API, I started implementing code for it on CrazedSanity.com. After an unfortunate number of hours spent trying to get ScribeFire to work with my code, I found out that my XML parser was behaving poorly. It was having a problem creating XML which had a tag named "value"... since that was a "reserved word" in the XML creator program, it couldn't create XML with a tag named that. it was a stupid shortcoming, and one that inspired a TON of rebuilding of the XML library, among other things.
At the same time as I found this failing in my XML program, I had implemented a system which did some automatical configuration stuff for a website using an XML config file. So magical that a single XML file could easily contain the configurations for multiple different integraged PHP apps running on a single website, even if those apps don't natively support a configuration file as such. So now I've got a broken XML library basically controlling my website, which is where I test everything... so now I had to build test scripts that completely bypassed the configuration system I'd built (without bypassing it, anytime I saved a change to the XML library that acted inappropriately, it caused the whole website to puke). What a mess.
I figured out the problem with the XML library, which inspired a massive rewrite of the XML creator library. The creator program wasn't used to a large extent yet (at least not by me), so rewriting that was somewhat easy. "What about all those problems you were just talking about," you ask? Well, rewriting the creator lead to problems found in the parser. And the parser was probably the most-used library I have, outside of the content manager (CS-Content).
Suffice it to say, the XML library has been mostly fixed. The only problem I have that keeps me from finishing these changes is how the XML content gets reordered when it gets parsed & then recreated. There's a method to how it gets reordered, but I want the system to be able to take an XML file, parse it & recreate it, and have the original XML look identical to the final XML. The actual data is the same in the resulting XML, so technically there's probably no real issue, but getting it to create identical XML to the stuff it parsed means testing it is much easier (which means finding bugs is easier, too).
With any luck I'll finally be able to finish the XML library & be able to implement ScribeFire functionality very soon! Stay tuned!