Recently a friend let me borrow a book from him and it has really got me thinking. The book is called "Learning XML" by Erik T. Ray. XML is designed to make the structure of data ubiquitous. You see, there's current a problem with the Internet. There are many, MANY different web sites out there and lots of them structure their data differently. This, unfortunately, makes is very difficult to share information. Let me give an analogy. Say you have a grocery list to do your shopping. That list is your data (eggs, milk and bread). On the Internet, someone might have the same list, but it looks like this: AA eggs, 2% milk and white bread. Or, worse yet: fresh bread, 2 eggs and two percent milk. Do you see the problem? Even though the last two lists are technically the same, they differ in their descriptions, order and quantities. Humans are smart enough to figure this out, but computers just get confused. (incidentally, this is why you can name a file the same name in the same folder as another, only change the case of one letter, and have it work. Computers even see those as different).
The purpose of XML is to create rules for how you structure your data (or grocery list). This way each and every time you make a list it will be the same. Even though it takes a little more work during the set up to make sure it's structured properly, the advantages are huge. You see, then other programs can use your data without trying to figure out what it means. Ladies, that means the guys can do all the shopping because they'll understand what's on the list.
OK, so now you know what XML does, but so what? Why is this important? I really see XML as the backbone to the future of the Internet. It will be a way for web sites to share data back and forth easily. That way you won't have to visit eight places to do your daily stroll across the world wide web. Instead, you might only have to visit four... or maybe one day only one place which has everything you want right in front of you. Think about, if all your favorite places use XML, you (or someone who actually likes to program) could write something to bring it all to one place.
The advantages of having everything in one place is huge! Yes, it does save you time which is nice, but it also means there's more information to learn. For example, Amazon knows what books you like to buy, but what if they also knew what videos you liked to watch (from YouTube and or Netflix). What if they knew the music you like to listen to (from Last.fm )? Or who you send email back and forth with, and what books/video/music they liked? Do you see the power here? Suddenly places like Amazon and Google are no longer just relying on one type of behavior, but can pull from everything you do to offer you something you actually want 99% of the time. This is what people are starting to call web 3.0 and is part of the semantic web.
I heard a nice way to sum it all up and it goes like this: web 2.0 is all about helping people learn about, and with, other people. Web 3.0, or the semantic web, is all about computers learning more about us. It's a powerful concept which I think AOL was on to with their AOL portal, but it will be something much more effective and customized. XML is the tool which is allowing this to happen.
It really feels like companies are trying to figure out how to make everything work together and eventually the number of places using XML will hit a tipping point where all the sudden every site will have to use it. Personally, I think it's very exciting and am already trying to figure out ways to implement XML and open sharing on my web projects.
So, "Learning XML" is a good book for those of you willing to swim in the code.
PS. For those of you keeping score, gDocs just added a margin to your documents. I think it looks good and helps it look more like a real document. Also, I just noticed the ability to add comments to the document. This should be very helpful when I'm editing someone's work. Normally I would have to change font colors to let them know I changed something.