I really shouldn’t be telling you this. It will probably get me into a lot of trouble. Still, its not like a lot of people are reading this, so I might as well open up for once and tell you the straight scoop. XML was a hoax. This is real. Not many people know this.
Years ago, before I came to work at Microsoft, I used to be one of those people that liked to grumble about technology, especially things about the operating systems I didn’t like. Others at the company where I worked were liked minded, so often we sat around at lunch and griped about whatever was on our minds. Now, it wasn’t always griping about lame hardware or software, sometimes we griped about what we disliked about our own jobs. Ya, I know, hard to believe. We’d often get into debates over coding styles and programming languages. Whenever someone brought up a new programming language they knew about, I aways fought back and said things like “LISP could do that years ago. What’s so new?” These debates went on for hours.
One day a very particular topic arose. Many of us had just read in PC Week about a change Intel was making to their 486 processor, to bring out a lower end model. Apparently, they took a little laser and zapped out the math co-processor. So in effect, you got a 486 chip with all the modern instructions, you just got sucky math. I think they called it the 486SX, where SX stood for ‘sucks.’ Anyway, I recall being livid about it at the time, and that’s when I had my unfortunate slip of tongue. I shouted, red faced, “They might as well bring out a low end version of LISP. Sure, just burn out the execution engine!“ That got a few laughs from most everyone. Except this one guy, Paul. Well, to tell the truth, I don’t recall anytime when he did laugh. He was one of those guys who was always over-serious, over-passionate about any topic. He just looked at me and waited for the laughter to die down, and then he said, “what do you mean?“
So I guess I just started to ramble off an explanation. I just made it up on the spot.
“You know,“ I said. “Take out all of the operators.“
“Why would you do that?“ This was one clueless dude.
“So you’d just have the data. Now wouldn’t that be dumb.“
You see, one of the really cool things about LISP is that code and data were stored in the same representation. LISP had this really simple form used to describe both. A LISP program was basically a bunch of nested lists of identifiers. Each list was surrounded by a pair of parentheses. If you imagine back to those really ugly examples of type casts done in C programs where you just had parens going everywhere, then you’d start to see what a LISP program looked like. It was a mess to the untrained eye, but to me it was beautiful. It could describe everything.
Why this was so ridiculous to me, was at that time the computer industry was just then coming to terms with the new idea of object-oriented programming. The whole benefit was being able to couple behavior with data. The holy grail of the entire industry was a phantom chase after something that already existed in its purest form; LISP. So you can see the joke. LISP without code was just plain ridiculous. It was like rolling back the clocks. We might as well go back to computers with punch cards.
But Paul never got the joke. He was one of those guys in the office that just never understood the humor in a Farside comic. He thought I was being serious. He would come back to me every now and then and asked more questions about code-less LISP. So I strung him along. Everyone thought it was a good gag. Still even Paul eventually started to doubt what you would use this codeless LISP for, so in spirit of a good prank I kept feeding him tempting justifications.
“Look,” I would tell him. “Even though there’s no code there, you can still manipulate the data using another language. Its a perfect text representation of information, and you don’t even have to build a parser, it comes built into the codeless LISP engine.”
Sometimes I carry a joke too far. One day I will tell you about the satellite tracking system, or my brother will since he seems to read my posts a lot and he was in on that one. I wanted to show Paul the magic of a truly running codeless lisp engine. So I took the public domain XLISP source code and just sort of yanked out all the operators, and made the ‘quote’ function the default. Then I slapped a couple of exported functions into it and built it as a link library.
“See,“ I told Paul when I was done, “all you have to do is link up to the XLISP library, and you can feed it your files at runtime, what you get back is this tree structure and a bunch of functions for manipulating the tree.“ I had some sample ‘data’ in a ‘.XLP’ file. It always makes things seem more ‘real’ when you go to extreme levels of detail like making up a new file extension.
I wrote a sample program that showed him that I could ‘read’ the data w/o first knowing what its structure is. “Wow,“ was all he could say. And even the sample program was a joke. There was no such thing as not-needing to know what the structure was. So what if I could ‘read’ it into memory. My code still had to know what to expect.
Eventually, I just couldn’t take it anymore. Even I had a limit on how far I could dupe someone, so I just stopped. I didn’t try to convince him it was a joke. He wouldn’t have believed me. So I just stopped talking about it.
Years later, I was working at another company when I got a call from Paul. He had tracked me down through another co-worker that I had kept in contact with. Apparently, he wanted to know if I still had that sample program, and the codeless XLISP. I had to dig it up off a 5 1/4, but I found it. Apparently Paul was now working with this guy named Tim, and Tim was even nuttier than Paul. Tim had thought this data-without-code thing was a great idea. They were starting up some ‘standards body’ to manage its design.
I sent them the code, but I made them promise to leave me out of it and to call it something else. After all, one day they’d eventually see how stupid it all was and try to blame me.
But I digress