Arthur C. Clarke's third law goes like this, "any significantly advanced technology is indistinguishable from magic," which an interesting opinion to say the least. This statement does a lot to explain the interesting array of technologies available to us, but it doesn't explain the fear that some individuals have with anything new. Terry Pratchett, author of the Discworld series, has the following law: "any significantly advanced magic is indistinguishable from technology" comes somewhat closer to an answer.
All of this leads me to the question, once you get past all of the metaphysical stuff exactly what is magic?
I am of the opinion that magic is merely being able to do something that the other guy can't. Consider someone like a clown; I consider the balloon animals that they make to be a form of magic. Why? Because even on a good day I can't even blow-up those skinny little balloons. Of course, it might be that clowns probably feel the same about some of the things that I do, but I've never asked them. Actually I'm afraid to ask him, because it would be embarrassing to know that a clown could do my job just as well as I could.
There are two possible reasons that somebody can do something that somebody else cannot. The first reason is skill. Clowns go to clown college where they spent their time learning to make balloon animals, while I, on the other hand, was a clown in college spending my time trying to get the root password. The second reason is the tools. Clowns have nifty little pumps that save lung power, while I, need to ask a clown where they got their pump.
The same rules that apply to making balloon animals can be used for other skills as well. Take XSLT, for instance, the only way to get the skill is through practice. By attempting various transformations one can get pretty good at working with the language. But, unlike balloon animals where the tools are within the price of most people, the tools for working with XSLT can be rather expensive. With some price tags close to $1,000.00 US, an XML development suite could seriously impact one's budget.
There is, however, an open source alternative called Butterfly XML. I don't know about you, but I think that an open source XML IDE goes along pretty-well with the balloon animal and magic theme of this article.
While Butterfly XML is by no means a perfectly polished product, it is after all still a beta; it sure beats the heck out of the tools I used to learn XML and XSLT. Looking back at it now it's a wonder that I learned anything at all using Notepad and MSXML, I mean other than learning that it was awful. With that kind of background Butterfly XML's minor flaws, which are listed below, seem pretty insignificant:
- No cut and paste when editing.
- No facility for writing the results of a transformation to a file.
- The xsl:output element is not fully supported.
- There is no separate XPath evaluator.
While the above list might be considered show-stoppers by some, particularly those with deep pockets and a love of shrink-wrap, I don't feel that way. Instead I feel like Butterfly XML is a young, although not immature, package whose strengths outweigh its weaknesses. In fact, let's take a look at some of those strengths.
Figure A shows the start-up page, which includes a list of the most recently opened documents.
The user interface is pretty standard to those familiar with other XML development packages. This includes tabs for those of us that like to have multiple documents open at a time. This means that when I can't remember which node in the source document is needed all that I have to do is click the tab and look as Figure B illustrates.
|Multiple documents in Butterfly XML|
Developers that have been using a text editor instead of another XML IDE will find Butterfly XML's element completion both refreshing and unnerving. The unnerving, however, will quickly pass and be replaced by the realization that they put themselves through some real development agony because they didn't poke around Source Forge looking for a solution.
But, enough of these past annoyances because Butterfly XML's many features can cure many old pains. Take for example the ability to view an XML document as both a DOM document as shown in Figure C and text as in Figure D.
|DOM representation of an XML document|
|Text representation of an XML document|
All this and XSLT too!
Probably because I'm big on using XSLT, the ability to test XSL transformations is the feature that I find most impressive. Sure, the result can't be saved, but in the real world, products like Butterfly XML aren't intended to be used as anything other than a development platform. And, as a development platform Butterfly XML performs admirably due to its ability to set breakpoints as shown in Figure E.
|A breakpoint in an XSL transformation|
There is one last hidden feature that I'd like to mention; because Butterfly XML is written in Java it will run on multiple platforms. So, if Saturday is Linux day in your house or Windows day for Linux people, wouldn't it be nice only to have to learn a single XML IDE?
While not as polished an application as XMLSpy or Sytlus Studio, Butterfly XML shows some incredible promise. Yes, it isn't absolutely perfect being a little rough in spots, but what software is perfect? In fact, all clowning around aside, I've been using Butterfly XML almost exclusively for the last five months. I can't wait until it's out of beta.