January 2004 - Posts

GRDDL - Gleaning Resource Descriptions from Dialects of Languages

From the W3 Abstract: “This document presents GRDDL, a mechanism for encoding RDF statements in XHTML and XML to be extracted by programs such as XSLT transformations.”

http://www.w3.org/2004/01/rdxh/spec

Interesting stuff.  Think about applying this to WordML, InfoPath, etc.  Hmmmm.

 

Sean

I can see!

 Friday I went under the laser and though I was nervous (“Doc, I’m a twitcher and a blinker”).  It went off very smooth.  I was very, very happy.  Here’s a recap:

1.      Arrive at the office. 

2.      They remap my eyes with the Orbscan.  (It looks just like something out of “The Manchurian Candidate”.  Picture a chin rest with a red light and concentric black and white rings that light up when they scan your eyes.)  It creates a map of your cornea.

3.      They check your prescription.

4.      You sit around for a while and get to watch a surgery or two.  The surgery room is a three sided glass room viewable from the waiting room.  I watched them cut open one cornea and had had enough.

5.      You meet with the doctor a few minutes before and tell him how nervous you are and he laughs at you.  (Not really, he was great in calming me down and talking me out of drugs before the surgery.) 

6.      They call your name and you enter the room.

7.      Then you lie down on a long table that holds your head in an indentation so you don’t roll around.  After you lie down the table rotates you under the “laser beam”.  At this point, I reminded myself that I chose to have this surgery.

8.      They cover the eye not being lased.

9.      The good doctor tapes back your eyebrow and upper eyelid.

10.  Eye numbing drugs are dropped on your eye.

11.  “Clockwork Orange” style eyelid holders hold back your eyelids.

12.  Then they put a metal ring on your eye that is a little bigger than you cornea.  

13.  They turn on a vacuum pump and tell you that “you’ll feel some pressure and that it will get dark”.  You then feel your eye being sucked upward (no pain) and everything goes dark.  I remind myself to breathe.

14.  You then feel (no pain) a blade cutting around the edge of your cornea.  This was a little freaky because it didn’t hurt yet you could definitely tell that something was cutting your eye.

15.  The doctor (or someone in the room) laid back my corneal flap.  Red and green pinpoints of light are visible.  The doctor say’s focus on the red light.  (This laser was the “flying spot” laser.  It has a tracking beam that tracks your eye movement and then the other beam does the frying.)

16.  Then the cooking starts.  The laser starts click and cooking.  And the second worst part, you smell your own eye cooking up, despite the fact that they have a vacuum positioned by your eye to catch the smell.  And in case you are wondering what it smells like, if you’ve ever burnt salmon skin on a grill, that’s the smell.

17.  The lasing goes on for a few seconds, and then it stops, the doctor folds your cornea back in place and adds some drugs on top.  This whole process was about 60 seconds max.

18.  After that he did my other eye, and then complemented me on what a good job I did, which I thought was pretty humorous since he was the artisan and I was the person that had to remind myself to breathe continually.  

19.  Then you sit up, things are a little hazy (due to the anti-inflammatory drug) but you can see the clock on the wall.

20.  They then send you to a post-op room and check out their handiwork.  

21.  I dropped off my glasses.

22.  They gave me two valium and I was driven home, by my lovely wife.

23.  Napped for four hours and when I woke up it was amazing.  I could see just fine for the first time in 20+ years.

 

The day after I went in for my post-op check up and my vision was somewhere between 20/15 and 20/10!  Final thoughts, pretty f’ing fantastic!  

 

Going under the laser

 Well, tomorrow I go under the laser.  So far my experience with the LASIK center that I am having my eyes worked on has been stellar, compared to regular doctors.  The only other experience like this was with a mid-wife and the birth of our two kids.  

Here are the things that I’ve noticed so far:

1.      Highly motivated staff (Hmmm, this might have something to do with education and pay…)

2.      A clean, well thought out office.  The exam, waiting, and surgery area are large and open, thus nothing to hide.

3.      Lot’s of information about the actual procedure.  Nice to have when you are nervous about a guy frying up bits of your cornea.

I’ll see everyone (much better) tomorrow.

Sean

Tufte and UML

 Here’s a good article on how visual design effects your documentation from the folks at Rational.  http://www.therationaledge.com/content/jan_04/f_modeling3_bl.jsp  For more info on Edward Tufte visit www.edwardtufte.com and if you get the chance go to his seminar and you’ll get all of his books, learn about visual design and see a great speaker.

 

Sean

The semantic web using xml namespaces

I've got yet another wacky idea as a way to create the semantic web using xml namespaces.  There are some hurdles and I'll discuss those later.  One of the common problems with the web is that machines can not get the context of the markup.  When you talk about Java are you talking about the island (Indonesia), a slang term for coffee or that programming language?  The machine doesn't know. 

Well, that's a problem.  Let’s say you are reading a web site about coffee and you want to find some Java grade A coffee.   If you put Java in a Google search guess what you get, nothing but links to Java programming.  I’m a .NET guy so I start going though the links and finally on result number 68 I get the first reference to the word “coffee” and guess again.  It has nothing to do with coffee and everything to do with Java programming.  On Google hit #150, I got something about the Indonesian island, and at hit #250 I stopped looking for anything to do with Java and Coffee. 

So in order to create the semantic web there is RDF.  While RDF works, I was thinking of a last post of mine about xml namespaces.  Namespaces are about context, e.g.  This node (<xhtml:b/>) belongs to the XHTML collection.  And I thought what a great way to provide context or “Semantic meaning” to XML!  It’s simple, and fairly lightweight.  All you do is namespace your nodes, and then provide processing instructions that can be used by a semantic parser.  Below is a sample of what I mean. 

<?xml version="1.0" encoding="UTF-8"?>
<?semantic namespace="pjava"  library="http://www.sun.com/programming/java" about="Computer programming language"?>
<? semantic namespace="cjava" library="http://www.dictionary.com/slang" about="Coffee from the island of Idonesia"?>
<root xmlns:cjava="http://www.dictionary.com/slang" xmlns:pjava="http://www.sun.com/programming/java" xmlns:xhtml="http://www.w3.org/1999/xhtml">
   <node>
      <pjava:subnode>Java programming is ruled by Sun</pjava:subnode>
      <cjava:subnode><xhtml:b>Java coffee</xhtml:b> is grown in the Sun</cjava:subnode>
   </node>
</root>

Notice that the above XML is a lightweight way to provide semantics.  The other item is that by using xml namespaces we can markup our current markup documents regardless of what kind of xml document it is.  We can add semantic namespace to RSS documents, we can use it in WordML, or just plain old xml.  Of course, you could end up with a large number of semantic processing instruction nodes; however it would allow you to reuse that information throughout your document.  And xml namespaces allow your content context to cascade enabling you to do something like this.

<?xml version="1.0" encoding="UTF-8"?>
<?semantic namespace="dotnet" library="http://msdn.microsoft.com/vcsharp/" about=".NET Programming using c#" lang="English"?>
<?semantic namespace="java"  library="http://www.sun.com/programming/java" about="Computer programming language" lang="English"?>
<?semantic namespace="me"  library="sean@somewhere.com" about="Sean's email address" lang="English"?>
<root xmlns:dotnet="http://msdn.microsoft.com/vcsharp/" xmlns:java="http://www.sun.com/programming/java" xmlns:me="http://www.somewhere.com" xmlns:xhtml="http://www.w3.org/1999/xhtml">
   <node>
      <dotnet:subnode>
         <me:semantic>My</me:semantic> Microsoft programming language of choice is C#.  C# is also becoming crossover language of choice for <java:semantic>Java programmers</java:semantic>.</dotnet:subnode>
   </node>
</root>

Notice that the dotnet namespace is the parent node with two other semantic subnodes one <me:semantic> refers in the semantic processing node to an email address to contact me (not my real address). And the other is for the Java reference.  Another thing you’ll notice is that there is no semantic processing node for the xhtml namespace.  This way you can have namespaces that are not included in your semantic processing and this will be helpful in adding semantic information to things like Word documents and existing html documents.

Here’s a breakdown of the semantic processing instructions. 

<?semantic namespace="dotnet" library="http://msdn.microsoft.com/vcsharp/" about=".NET Programming using c#" lang="English"?>
<?semantic namespace="me"  library="sean@somewhere.com" about="Sean's email address" lang="English"?>

First we have the “<?semantic” portion of the node, this identifies semantic processing instruction information is available to xml parsers. Second the namespace attribute links the xml namespace to semantic information.  Third, the library attribute gives you a resource identifier, which could be a web site, an email address or even a physical address.  The about attribute gives additional context information and lastly the optional lang attribute is the language format.  In the case of the email address it supplies you with the person’s language of choice.

I think the killer app would be a task pane in Word, Excel, or a sidebar app in Longhorn that would allow you to highlight a section of text and you then click a namespace (similar to the “Styles and Formatting” taskbar) to add that metadata to the document.  These could allow you to easily add semantic meaning to your documents.

I welcome all thoughts and comments and remember this is a first pass.