I’ve got to share something with you. I invented XML. Surprised? Imagine how I felt when I first realized it myself a few years ago. No, don’t bother going to look for my name on the W3C Web site, I’m not listed there because I wasn’t invited to be on the committee. The really bad part of it is that I didn’t get any royalties either.

Just to be clear, I don’t mean I invented XML in the same sense that Al Gore “invented” the Internet. Or in the same way that Microsoft “invented” the GUI. When I say, “I invented XML,” I mean in the completely real and completely unverifiable sense that I independently came up with the same idea but didn’t know exactly what to make of it. I suppose that makes me a modern-day Nutty Professor (the one played by Ed, not Eddie).

The college years
During my first attempt at obtaining a college degree, back in the halcyon days of 1992, I was a terrible student. It’s not that I wasn’t smart; it was more that I was, well, lazy. You see, I had the misguided idea that a computer should be a recreational device, not a source of labor, which isn’t an ideal work ethic to have when pursuing a computer science degree. Actually, back then it was referred to as “information systems and data processing” and a little heavy on Pascal, but I digress.

While muddling through some first-year project that involved building a system that could model an automatic carwash (honestly, where do textbook authors get these ideas?), I had to write a routine to read some data in from a text file. I wasn’t exactly excited about the project, and I was looking for an excuse to knock off early and go play “Civ.” I think the straw that broke the camel’s back was when I miscounted columns and my program found a character where it was expecting an integer. Welcome to Crash City, population me.

To make matters worse, I was writing this program on some forgotten flavor of UNIX that insisted on creating core dump files on every runtime error—files that usually took up my entire disk space quota and that I didn’t have the necessary rights to delete. Besides, fixing the bug would require getting back into vi, a prospect I didn’t relish in the best of times. Just the excuse I needed. I started thinking while my game loaded.

An idea born of…what, exactly?
Wouldn’t it be great, I thought, if there were a way to store computer data in such a way that it was self-describing? Then I wouldn’t have to worry about making the mistake I’d just made. Of course, the data would have to be stored as plain text in the data file, mostly because that was all I knew how to work with at that point in my Pascal experience. I figured everything could be taken care of via a standard header defining the data fields and some kind of indicator (a “tag” in those days was something I always forgot to take off presents at Christmas) attached to the data to identify it.

What happened next? Well, the game finished loading and I went off to conquer a virtual world. That idea stuck with me though, and many years later, while reading a trade magazine that has since disappeared in the mists of media consolidation, I stumbled upon something called “XML.”

I can’t believe I’m alone here. Someone else out there must have dreamt up some wonderful new idea and done absolutely nothing with it, only to later discover that some other joker had actually gone and made it work. Head on over to our discussion forum and share your story. Come on, and I’ll tell you about the time I invented ASP….