• « April 2005 | Main | June 2005 »
  • XSLT:Blog[@author = 'M. David Peterson']/Main: May 2005 Archives
              • May 31, 2005

                A little ECMA XML treat from the Mozilla bunny!

                New Extension Developer Features in Deer Park Alpha 1

                E4X

                The Mozilla JavaScript engine now supports ECMAScript for XML (E4X), a draft ECMA standard that adds native XML datatypes to the language and provides operators for common XML operations.

                Thank you Mozilla Bunny!

                Hey IE7 Bunny... You gotta' ECMA treat for us too? :D

                Posted by m.david at 08:32 AM | TrackBack

                Phalanger : PHP and the .NET Platform? At speeds 2.5x's faster than PHP : 1.7x's PHP + Zend Optimizer? Is finding out really worth a click?

                Apparently so.

                So before I stuck my squeaky clean reputation (shhh! some may not know...) on the line I decided to spend some time playing with and determining for myself that:

                a) It runs using IIS 5.1/6.0 with ASP.NET enabled (and all other scripting languages that do not directly state aspnet_isapi.dll as the executable path for their particular extension are disabled)

                b) It actually passes the "Wow! That seems pretty fast" test.

                [NOTE: In my opinion if it seems like its taking a long time, or furthermore, too much time all together, it does'nt matter what the benchmark states. Life is perceived. Perception is reality. As such, Life is reality and if benchmarks contradict life then what good are they in the first place? To some that means something profound. To others? They're wondering why they answered yes and are now looking for the exit button. Hint: Bottom right corner of the page, just to the left of the, no right of the... You know what... I know its down there somewhere... just keep looking, you'll find it.]

                c) It actually integrates with other CLI-enabled languages, such as C#

                Yes. Yes. And, [wow... thats pretty cool... huh, makes me wonder which language will be the final member of the "CIL = BILL[Me Later]" religion?] therefore, Yes..

                See for yourself...

                [Are you still looking for the exit button? I know it's down there but here, let me make it easier on ya... Click here to exit...]

                Posted by m.david at 07:50 AM | Comments (0) | TrackBack

                May 30, 2005

                Preparations for the Future - Parallel and Functional Programming Paradigms

                MIT OpenCourseWare | Electrical Engineering and Computer Science | 6.827 Multithreaded Parallelism: Languages and Compilers, Fall 2002 | Lecture Notes

                A colleague of mine recently pointed me to this MITOpenCourseware [see above link] as something worthwhile to add to my studies. This particular individual is a highly regarded scientist in his field of study, much of which is squarely focused on Functional programming.

                Enter the world of Parallel programming. We've all heard of it. Some of us may have even studied it a bit and even written a program or two utilizing the some of the patterns specific to the Parallel programming genre. This is FANTASTIC and is something that can not be underestimated for its value.

                Multicore processors are the hot new ticket in the hardware world. It is with these processors that we will be able to take full advantage of the parallel programming techniques suggested in this online-courseware from arguably (I wouldn't argue this, but some might) the most prestigous school of technology in the entire world. At the heart of this courseware is Functional programming, which in many ways can be considered synonimous with Parallel programming due to the great advantages gained by utilizing all that Functional programming brings to the table and coupling this with all that Parallel programming brings to the table.

                If your'e up for the challenge this is something I would take to serious task as a "begin to learn now so that you can be several steps ahead" when these two areas of computational study become the defacto-standards of our everyday programming environments.

                Best of luck!

                Posted by m.david at 07:33 AM | Comments (0) | TrackBack

                XMLWiki.com is now live

                As per my recent post to XML-Dev:

                As mentioned I have setup XMLWiki.com and added the first content addition, covering the MS Support forums, newsgroups, and blogs at http://www.xmlwiki.com/index.php/Support:ms-related.

                As with XSLTWiki.com this is an ad free zone. The only rules as far I am concerned are:

                - Keep things related to XML
                - If, after adding content to the wiki something ends up looking more like an advertisement than general content then replace the content with a "For more information visit ..." link.
                - If you see WikiSpam, delete it.

                With that, this is the XML communities too enjoy, so please, by all means, enjoy :)

                Posted by m.david at 12:53 AM | Comments (0) | TrackBack

                May 26, 2005

                Why didn't I just listen to Elliotte in the first place?

                Have you ever had one of those "moments" when you have literally dug so deep down into your mind to try and solve a problem that you literally have reached the point where there is simply nothing left to search through? I mean, there might be brain matter there but this stuff hasn't been so much as fired up and taken out for a Sunday stroll to the end of the driveway much less a weekday commute to work and back. If my last post seemed a little more off the wall than normal??? this would be the reason why... At least I'm assuming as I just re-read what I wrote and I have myself asking "what in the hell is that kid on?" and I know that I'm not on anything!

                Actually I think I may have been on something... and that something... I think... was that point you reach where you have simply decided that the blank screen staring back at you when it should be filled with colors, shapes, and text-a-plenty could actually be the invisible figure of your computer's gloating face taking in his/her "oh so sweet victory" as it seems that this time around he/she has actually and finally found a way to defeat you... but thats not the worst part. Oh know, it gets worse...

                How? By the fact that by the time you reach the front door with keys in hand and pints of tequila on your mind, having simply blown off the day as completely and totally useless you actually think to yourself:

                "Oh no... Oh no, No, NO! He/She's not going to beat me this time... Oh HELLLLLL NO!!!! Not this time, not now... that's it!!! This time He/She has gone too far!!!!!!!!!!!!!!"

                And you honestly and truly believe those words. Even if for only a fraction of a second, this point is proven by the fact that you have actually turned back towards the office, thrown the keys down so hard there a chance, you think to yourself, you've actually "chipped" the carpet (or possibly the cat 8|) and in a moment of close-but-not-close-enough rage of fury come after your computer thinking physical violence is the only answer.

                Maybe that Tequila's not such a good idea afterall... (although you would be properly taking a cab this time round as if not the cat then whatever it was that took off running with your keys empaled in its side is less than likely to be coming back any time soon... ;)

                You know what sucks? Well, what sucks besides:

                - the purpose behind the content of this entire post thus far...

                - and the fact that you still don't know if it was the cat or not,

                - and if it wasn't, where is the cat?

                - And if not the cat, does that mean that you're now going to have to replace your entire key rings worth of keys given the fact that anything that has just been empaled by a set of what look and feel like a set of steel spikes is less than likely to return AT ALL, much less anytime soon,

                - and if that wasn't the cat then what the hell was in the hallway when you snapped just enough to have reached within 5 feet of the box before you realized "that things plugged into 120 volts, isnt it" and wisely slowed to a stop just in time to avoid gaining any sort of real understanding into just how evil that little bastard can be if He/She wants to.

                - So what now starts to make this list a little less of a bitter pill to swallow is the fact that this time you have at least said this without actually believing He/She's alive and instead using it as a simple way to vent your frustrations.

                - Of course these frustrations seem to take on a whole new feeling of "AAAAHHHHHH!!!" when:

                [and this is where we will bring the "you know what suck's?" question back into play]

                - after two days and at least 3 moments where you were pretty sure you were going to break into tears you find out [via IEBlog, A DAY LATER!!!]:

                Netscape 8 and Internet Explorer's XML Rendering

                We’ve just confirmed an issue that has started to be reported on newsgroups and forums that after installing Netscape 8 the XML rendering capabilities of Internet Explorer no longer work. That means that if you navigate in IE to an XML file such as an RSS feed http://msdn.microsoft.com/xml/rss.xml or an XML file with an XSLT transformation applied then rather than seeing the data you are presented with a blank page.

                Could it get worse?

                You had to ask, didn't you...

                If in and of itself this post has not suggested a level of suckness greater than any other level of suckness you've heard all day thing's take on a whole new level of suckness when you realize that the post you made about Netscape a few days ago that stemmed from a post from Elliotte Rusty Harold in which he states:

                Netscape has released version 8.0.1 of its namesake web browser for Windows. This release is based on Firefox 1.0.4 instead of 1.0.3, Apparently someone at AOL finally got enough a clue pounded into their head to realize that shipping a browser with a known security hole just to meet a deadline and a code freeze wasn't so smart. Any users should upgrade, but most people should probably just use Firefox and forget about Netscape.

                was the only reason you chose to install Netscape in the first place as you were pretty sure this was the "IEFF" (IEFF??? Hmmm... could we somehow contrive deeper meaning with these letters... Hmmm... let me think about that for... you know I'm not going to even think about it that long... No! NO MORE "THINKING"!!!) release and wanted to try it out to see if actually worked to then blog "halellulia's" if it did...

                Why can't I just listen? I mean when you're talking about someone like Elliotte who's going to be right 99.100% of the time why bother with taking him to task when you know the odds your verdict is gettin' overturned anyway are, again, 99.100%?

                That Elliotte Rusty Harold I tell ya... He's a smart one now isn't he...

                Damn it!!!

                Ok, I'm happy again now... its a forced happy but at least I know I can now get some work done... work that is desperately needing completion and has suffered GREATLY because of this little "Tango w/ Timmy" (which is my computer's new name... I figured every living, breathing organism deserved to have a name, right? Why Timmy? To be honest, the state in which my mind was in when that name came into existence is not a part of my brain I plan to "visit again real soon!!" [said with the same enthusiasm and gestures made famous by Chevy Chase in the Vacation series during each visit to the family "funny farm".

                Cousin Vicki
                : I'm going steady, and I French kiss.
                Audrey Griswold: So? Everybody does that.
                Cousin Vicki: Yeah, but Daddy says I'm the best at it.

                You know what should have given this one away. Kurt and I were going to record the first blogxast last night. But in a VERY unlike Kurt manner when the time came to call him he wasn't anywhere to be found. It was early this morning that I finally did hear from him and you could tell that his day/night/day had not gone as smoothly as he had hoped... And yet I still spent time today rewriting the registry... from memory! (my memory, not Timmy's! ;) instead of making the realization that all these problems started just about the time I installed Net'Scrape (sorry, what can I say... I tried... I really did try and was even pretty stoked by the Ctrl + Shift + E capability. In fact thats the exact reason I kept at it as this XML rendering problem only showcased itself, at least in my case anyway, when relying upon a PI to instiate a transform or define which CSS file to use to style the XML with. Javascript invoked transforms seem to work just fine. Hey Emmanuil, you need to be proclaiming to the world that the recent Netscape "XML Fiasco" was chewed on through and spit on out by Sarissa as "She's been hummin' along just fine during all of this..."

                "When you've got nothing else you can count on, you can always count on Sarissa to be there for you when you need her the most." [VARIATION:3] <-- in case you saw the first two variations of this slogan and are now wondering how and when it grew --<.

                I swear, I should ditch this whole computer business and go and write cheezy one liners for commercials or something.... or... then again, hmmmm... maybe not... :D :)

                Enjoy your night :D Oh, and for those who are worried... the Cat's OK... and, in fact, what I had thought was something running out with my keys empaled to its side was the combination of keys and carpet gracefully suspended in Pixar-Perfect syncronized animation that took on a much more animal-like appearance from a left-side perspective when my mind was already in a state that's on no known map this side of Alyeska, Alaska... and I doubt they sell many maps past Alyeska so its a pretty safe assumption that "these were some unchartered and therefore un-mapped territories I was traveling in." While I definitely am one who likes to travel, I don't think I'm going to plan a return trip to this far-off-land any time soon...

                Sure was fun while it lasted though, huh???!!! :D

                Posted by m.david at 03:13 PM | Comments (0) | TrackBack

                Map:This, Map:That, My:Map, Your:Map; Everywhere I look now its Maps(Google), Maps(Yahoo!), and Maps(MSN) - Its seems we've all gone Maps:SlapHappy

                Suddenly everywhere I look I'm finding something related to maps. Simon St. Laurent just yesterday sent me these [one, two] really cool links showcasing maps of the Dryden County Precincts voting tendencies that he rendered using a combination of XSLT 1.0, Excel, Access, and MapServer; I get the impression politics is of great interest to Simon given the fact that the title/subject matter for his personal blog is:

                Living in Dryden


                One Democrat's perspective on life in the Town of Dryden, New York

                That reminds me: Simon, if you read this remind me to tell you about whatever the subject of the reminder to tell you to ask me about during our next conversation... hows that for using the common English language for a near BlowFish Level encryption algorithm... Ok, MD5? MDP? (hah! Oh how clever am I? Damn, you don't have to be rude about it... I got very sensitive feelers you know...

                ...[at least thats what my ex-Girlfriend from a few years back used to tell me... [expletitive deleted out of simple fear... thats it, simple fear].... ooohhh... ummm, maybe I better stop right there before I say something I end up regretting [although I think I may already have... DAMN!] How bout' [spoken in scripted, slow-motion, monotone voice]"Boy do I miss her. She was GREAT. What a mistake I made in letting THAT one go. phew, she was something else." [think that might'uv saved me from having an alert sent out on the "Super-Secret-'He Said What???!!!'" Network that I promise you really does exist? Hmmm... probably not, huh???

                You know, you'd think I'd learn... I've watched it my entire life. With five sisters how could you not know that there was at least SOMETHING going on that could better explain how on earth they could possibly find out all the dirt about ANY GUY, living ANY WHERE, on ANY PLANET, and all within seconds of it happening... it AMAZES me!!! And this after 33 years of watching this Quartz-precision network of "NO WAY!!! He Said What??? Oooohhhhh, I'm going to make him wish he was never born when I get through with him..."; and They would; and He did... Poor bastard... I wish there was something I could have done to help but that network is impossible to beat... even with a fifteen-minute headstart they still somehow would have arrived, inflicted-the-damage, and were NO-WHERE to be found by the time I even had my shoes on and was out the door. You do the math... I'm telling ya, its an unbeatable system so, guys, seriously... don't even try. You won't win. It's a simple fact. I promise you will never, ever, win.

                Ok, now that I have done my duty of warning you I won't feel responsible when I get that email from you stating "M... you were right... How in the hell do they do it???!!!" Just so you know ahead of time what my response will be...

                "\[8|]/"

                Which is a text-stick-figure representation of me doing the "I have no idea, my friend. No idea what-so-ever..." expression with my hands flat across the palm, angled at 45 degrees, and a curl of the upper lip a bit as I add a bit of a shoulder shrug that also sort of raises my eyebrows a bit...

                no-words, just "\[8|]/" which, when properly translated [without the previous cleansing] states: "Dude, I have no fucking clue... They're damn aliens or somethin' (oh crap! I've done it again... I didn't really mean aliens like from outer space, I meant A.L.I.E.N.S. like:

                All
                Lovely
                Inspirational
                Energizing
                No-nonsense
                Sisters
                (if not obvious I've had to talk my way out of this one more than several times before now ;)

                ["Oh, and I did I mention how much I love you?]["Owww!! Damn You!"]
                "Mom, Mark swore!"
                "MARK!!!! Get in here, now!"
                ["Shit. Why does this always happen?"]

                [My life was all about the trauma]
                (BTW... for the correct dramatic touch you have to say Mark like "Mock". English accents seems to lose the "r" sound for some reason or another. At least both my parents English accents seem to.)

                Anyway, back to Simon: :D

                As he mentions there are two new titles from O'Reilly coming out next month related to mapping: Mapping Hacks and Web Mapping Illustrated. Cool! I definitely plan to add both of these to my collection as soon as they become available.

                Of course Google, Yahoo!, etc... etc... etc... have been releasing mapping related products by the fistful. It seems obvious to me that there is a calculated assumption that this particular market is HUGE and worth every penny poured into the development of the various projects. But something tells me we're about to see Yet Another "Yeah, Thats Cool, But Not As Cool As You Might Think" from the latest entry into the world of mapping technologies and related services. Its a lengthy download but if you've got a decent connection the streaming will start within a few seconds and will be done downloading long before you get through all 30+ CAPTIVATING minutes of Robert Scoble and his trusty camera man (or is he the camera man AND the interviewer? I never can tell for sure...)

                Of particular interest pay close attention to the 10 minute marker and the next few minutes after that. I won't spoil the surprise for you but rest assured Google, Yahoo, and the rest of the mapping world are about to be heading back to the labs to try and mimic even a portion of whats about to rock the online world of mapping technolgies and services... Fortunately Google seems to be attracting A LOT of talent as of late and even if they hadn't with Adam Bosworth you kind'a have to wonder if you really need anybody else...

                Yeah, you do... but you have to admit that to have Adam Bosworth on your side you have to feel pretty good about your chances to compete with ANYBODY on ANY PRODUCT, PERIOD. I wonder if Google would let me borrow Adam for say, 90 days or so to help me finish up some of my current workload??? Hey, the worst they can do is say no; well, I guess if REALLY pushed, and pushed, and pushed some more they could get a restraining order but I ain't no damn groupie... Although I will admit that if I was between Tim Bray, Tim Berners-Lee, and Adam Bosworth you might find me screaming like a little girl at a New Kids on the Block, err, Backstreet Boys or whatever other Phreak-Of-A-Bad-Experiment-In-Genetic-Engineering-Gone-
                Worse-Than-Was-Ever-Expected-Or-Even-Considered-Possible Boys Band that happens to be the BigThing at the present time...

                Ummmm... maybe I wouldn't scream like a little girl... Can we just forget that whole last sentence, or just pretend it never happened? Please? Ok, how much? [Every damn dime I make I swear goes to paying off Yet Another Witness Of Something Stupid I Did or Said... I would say live and learn but there are very precious few extra moments in my life so I have to cut it down to one or the other... Obviously I can't learn all that much if I were dead so I choose to live instead... Kind of sad, huh?! Anyway, com'on. How much we talkin'? ;)

                I swear I'm not crazy.... I just like to laugh. And write code. Sometimes the order is reversed but its usually one or the other. :)

                Posted by m.david at 03:34 AM | Comments (0) | TrackBack

                May 25, 2005

                A Bit of Irony | Further reason why I doubt I will ever succumb to Google's AdSense program

                This isn’t meant to suggest that I think others are wrong for participating in the mentioned program… but after reading a recent Tim Bray post in which I completely agreed with his point to then turn and notice some interesting ads that Google decided to serve-up:

                ABitOfIrony.jpg

                [ITEM 2]

                But a few paragraphs in, the science-for-sale dimension starts screaming out from between the lines. It turns out that the research from the some of the people talking up the benefits of moderate sunshine is funded by the Indoor Tanning Association, while on the other side the Sun Safety Alliance (funded in part by Coppertone) is backing the research of the all-sun-is-bad party. Is there anything left that’s not for sale?

                Reading this and then seeing the ads served up simply caused me to wonder even more as to whether or not I could ever participate in this program at any level.

                Again, please don’t assume that I am condemning the use of AdSense… I’m not… I just found this to be both funny and ironic considering the post questioned whether everything in this world was for sale…

                [NOTE: I have a HUGE amount of respect for Tim; without a doubt one of my more favorite people on this planet, and for VERY GOOD reason! As such I really hope I haven’t given the impression that I think this is something bad on his part. I don’t at all. I just found it to be more the reason why I need to consider the fact that as far as I know, I have no control over what Google might place as ad’s other than having a general idea that they will be related to keywords that have the highest keyword-match-to-$value rating such that Google (and subsequently myself as I am assuming that a percentage is paid out as opposed to a flat fee for each click? I really don’t know for sure as I haven’t looked far enough into it) will have the greatest chance of profitability by posting one particular keyword-based ad over another. The problem I have with this is what happens when, like this above graphic represents, the ads that are chosen to be placed against my entry happen to advertise the very product or company that I just took the time to suggest not-such-great-things about? The fact that, for the most part you can bid your way to the top, or at very least the top 4 spots means that after seeing a post I write anybody could then go and bid themselves into the keyword set that Google labeled for this post (just looking at the ads that are currently served should be enough to know where to start bidding.) So what then when someone who deserves to be slammed creates an ad that links to a bunch of lies as a way of trying to defend there position and bids it to the top of the keyword list. Has the post then lots all or even just some of its potential punch?

                Is this a conflict of interest in anybody else’s viewpoint or am I just being over-paranoid about this subject and simply need to not let things like this bother me? My current belief is that I’m not being over-paranoid but I am leaving plenty of room open for the possibility that I might. I guess I could just never post any derogatory remarks…

                Um, can I just say: HELL NO!!!

                That would be like cutting off my right arm and left leg or telling me not to breath… Venting can be a very effective way to get things out of your mind and as such out of the way of keeping you from moving on with your day… And further more this would MOST DEFINITELY give reason for the sell-out attribute to be added to my blog class:

                    [SellOut]
                    public class BlogEntry XSLTBlog : ICorporateSellOut {
                
                        private string entryContent;
                
                        public XSLTBlog() { }
                
                        public AddEntry(string content){
                
                        String[] mostProfitableKeywords = Google.get_MostProfitableKeywords("foo", "bar", true);
                        int i;
                        string keywordIteration = "keywords";
                        for (i = 0; i < mostProfitableKeywords.Length; i++){
                        keywordIteration = keywordIteration + ", " +  mostProfitableKeywords[i];
                        }
                
                        if (HasValue(content) this.entryContent = content;
                        else this.entryContent = 
                                "A bunch of worthless crap," +
                                " don't even bother reading it... instead please" +
                                " select from one of the ads related to the following" +
                                " keywords" + keywordIteration;
                                }
                
                        private bool HasValue(string content){
                            return ValidateValue(content);
                        }
                
                        private bool ValidateValue(string content){
                            Foo fooBar = new Foo();
                            fooBar.Parse(content);
                            return fooBar.DoesThisHaveValue;
                            //I think I'll stop here and I think you probably get the point :)
                        }
                
                    }
                

                BTW…. no I didn’t compile this to ensure it was valid as I know for a fact its not given I would have had to write at very least a stub Google class… Please just accept the fact that its possible the above has some blatantly obvious errors… To be honest I don’t know if it does as I havent even re-read it nor do I care if it does as its not really sample code… If you find an error and this bothers you to the point that you just can’t stand it… by all means, fix it and send it back my way… Otherwise, I’m not changing a damn thing ;) [UPDATE: It wasn’t that difficult in quickly passing over this post again that I did leave out the “class” keyword… This, of course caused me to notice “validateValue” instead of “ValidateValue” and the fact that the string the climaxed the point of writing this foo code in the first place extended past the viewable area, and etc… See this is why I can’t let myself look at it again as then my own tendencies to be bothered by sloppy code set-in and I have to fix it immediatelly or it’ll drive me nutts until I do… I think its a common trait amongst hackers as it seems we all tend to be a little nit picky when it comes to things of this nature…]

                Ok, moving on…

                The one thing I really do need to verify is whether or not you are able to use standard “-keyword(s)” to exclude ads that are of a particular keyword(s). If that were the case then this might be worth reconsideration. Lately I have been putting some serious thought into several possible career morph’s, moving away, a bit at a time, from consulting and contracting and more towards content development (online and offline) as well as producing several daily blogxast’s [Tonight Kurt and I are recording the first installment in the “Life from a different perspective” series I announced a few weeks ago as after a very successful dry run for about an hour and half a few days ago I feel very good about moving things forward. More on this soon….] and apparently my “extra $20 dollars a month” guesstimate from a few weeks back was potentially off by $500 to $3k, depending on whether or not you believe what others have claimed based on total page hits. $20 doesn’t “Woo” me… 3G’s buys a lot of books… And I like books :D As such, 3G’s “Woo“‘s me quite a bit :D

                The other option that I am putting more weight on (but would require more effort… possibly) is simply recommending books and items of interest from Amazon. In fact I created an account and tried out my first link using this account just the other day… This is something I could see as having a lot more legitimate reason for being a part of this blog and as such you will probably slowly begin to see integration of my AmazonID tag into books and products links that I recommend because I have read it and love it or used it and loved it, etc… At least this way I could have somewhat of a non-guilty conscience, right? Again, maybe I’m just over-paranoid about the Google Ads thing. If I do decide to implement them I plan to do integrate them in a nice and clean format that doesnt take over anything in regards to focus such that you are not bombarded with stuff that gets in the way of why you stopped by in the first place… content. :)

                I doubt I will say much more on the matter. If you see Google Ads you will know why and if you don’t I will let you draw your own conclusions…

                Cheers :)

                Posted by m.david at 07:51 PM | Comments (0) | TrackBack

                May 23, 2005

                Keep 'em coming DataDirect...

                While I won't promise I will post every little piece you send out to the world for consumption I can suggest that if this is how you plan to promote XQuery and your support for XQuery via tools and processors you may just find yourself a friend again in XSLTBlog...

                For anybody who plans to promote their software technolgies via a newsletter or online e'zine let this example act as a VERY GOOD implementation of how to promote your product the correct way without have to explain yourself or lose face in the community becuase of what seems to be shady business practice.

                Keep 'em coming DD!

                Dear Stylus Studio Friend,

                XQuery! So familiar, yet so coy! While we wait for the formal W3C XQuery
                Recommendation, developers like you keep banging down our door for new
                XQuery tools and components. And so we're especially excited to dedicate
                this special edition of the 'Scoop to announcing DataDirect XQuery (DDXQ)!
                With DDXQ, you can execute XQuery directly against any relational database
                including Oracle, Microsoft SQL Server, and IBM DB2 - and process the
                results from within your Java applications! And the icing on the cake? You
                can build these applications with Stylus Studio today! (Yes, today!) Read
                on and learn more about how you can put XQuery to work accessing relational
                data. And watch your inbox for next month's regularly scheduled edition of
                the Scoop.

                Sincerely,

                Ivan Pedruzzi, Senior Product Architect and the Stylus Studio Team!

                The Stylus Scoop, May 2005

                Table of Contents:

                1) Simplify Relational-XML Data Integration with XQuery
                2) XQJ: The XQuery API for Java
                3) XQuery 101: Everything you ever needed to know about XQuery.
                4) Why I XQuery: How developers are using XQuery in Healthcare.
                5) True Stylus Studio Stories: Why I switched to Stylus Studio


                1) Simplify Relational-XML Data Integration with XQuery

                XQuery is more than just a neat way to query XML - now you can use it to
                query relational databases, join XML and relational data, and simplify XML-
                Relational data integration. A beta release of DataDirect XQuery (DDXQ), a
                Java XQuery component that implements both XQuery and the XQuery API for
                Java (XQJ), is now available for free download. That's right: XQuery has
                arrived on the Java platform! Register and learn more about the DDXQ beta
                program today at: http://www.datadirect.com/products/xquery/xquerybetahome/

                Here are some questions we anticipate you might have about DDXQ (in a word,
                though: yes, it really is all that). If you have one we don't answer, visit
                http://www.datadirect.com/products/xquery/xquery_faq/ for the full DDXQ
                Monty.

                Q: What relational databases can I invoke my XQueries against using
                DataDirect XQuery?
                A: Using DataDirect XQuery, you can execute XQuery expressions against
                Oracle 9i (R1 and R2) and 10g, Microsoft SQL Server 2000, and IBM DB2
                Universal Database (UDB) 8.1 on Windows NT/2000/2003/XP, UNIX, and Linux
                (with more databases coming soon). You can use DDXQ to query XML, too,
                including XML files located on file systems accessed using "http:", "ftp:",
                and "file:" URI schemes, and XML contained in a Java application, such as
                DOM or SAX.

                Q: Why would I use XQuery to query relational data?
                A: So you can get all the benefits of using XML (standards-based
                interoperability and transformability, for starters) and still benefit from
                the high performance that relational databases have to offer. Unless you
                are looking forward to migrating volumes of relational data to XML, that
                is.

                Q: What types of applications use XML and relational data?
                A: Many middleware applications -- complex report generation, Web services
                applications, Web publishing, and others -- need to process relational data
                and XML. These applications, common to enterprises large and small, can all
                be simplified using XQuery. For example, XQuery can be used to access the
                content of messages or to construct new messages to be passed to a Web
                service. In addition, you often need data to process Web Services results.
                XQuery can process SOAP messages and create the XML needed for result
                messages. These are just a few examples of where XQuery can simplify XML
                and relational data integration.

                Q: Where can I learn more about these new XQuery technologies?
                A: Get started on the path to solving the relational-XML integration puzzle
                using the DataDirect XQuery! Register for the beta today at:
                http://www.datadirect.com/products/xquery/xquerybetahome/


                2) XQJ: The XQuery API for Java

                Think of XQJ as the JDBC for XQuery - it provides a standards-based
                interface for accessing databases or XML repositories using XQuery. XQJ
                lets you write portable XQuery data access code using far fewer lines of
                code, and it is the best solution for Java XML-relational data integration.
                In a nutshell, the XQuery API for Java (XQJ) enables a Java application to
                submit XQuery statements to a data source and programmatically iterate
                through the results.

                A new tutorial (and XQJ example) demonstrates how to use XQJ to invoke an
                XQuery expression and how to obtain results from within a Java application.
                It shows how XQJ can be used to perform joins between XML and relational
                sources, query DOM trees, issue prepared XQueries (similar to JDBC's
                prepared statements), and more. The example includes complete, working XQJ
                programs with source code and explanations. This material is available in
                HTML and in a printable PDF format. Check it out at:
                http://www.datadirect.com/developer/xquery/topics/xqj_tutorial/


                3) XQuery 101: Everything you ever needed to know about XQuery

                We're pleased to be able to provide you with an XQuery tutorial that
                includes a technical introduction to XQuery. And this is no puffy marketing
                piece (like the one you're knee-deep in now!) - this tutorial was written
                by Mr. Jonathan Robie, one of the designers of XQuery, and the Program
                Manager for DataDirect XQuery. The tutorial covers advanced XQuery topics
                like the XQuery Data Model, literals, locating and finding nodes, built-in
                and user-defined functions, XQuery types, and more. It's everything you
                ever needed to know about XQuery (but were afraid to ask). The XQuery
                tutorial is also available free, in either HTML or a printable PDF format.
                XQuery has arrived on the Java platform! Isn't it time you learned XQuery?
                Visit us here, and let the learning begin:
                http://www.datadirect.com/developer/xquery/xquery_tutorial/


                4) Why I XQuery: How one developer is using XQuery in healthcare

                Bing Wu is a Lead Software Engineer working in the healthcare sector. In
                this role, Bing is responsible for developing server-side Java Web service
                applications. You can read about how Bing uses XQuery to simplify his work
                here: http://www.stylusstudio.com/xquery/cust_healthcare.html

                (If you'd like to showcase your own XQuery application in The Stylus Scoop,
                drop us a line at stylusstudio@stylusstudio.com.)

                5) True Stylus Studio Stories: Why I switched to Stylus Studio

                Here's what Dr. Michael Kay, editor of the XSLT specification, founder of
                Saxonica, and a world-leading XML guru with just way too many
                qualifications to list in this newsletter, recently said on XML-DEV, a
                popular forum for XML developers: "I find that the easiest way to do ad-hoc
                validation (i.e., not integrated into an application) is to use a tool such
                as Stylus Studio. One of the nice things is that Stylus allows you to
                validate using a range of different processors - if your document is
                invalid, it can be helpful to get the error messages from more than one
                processor. By contrast, XML Spy uses its own schema processor, which is not
                always 100% conformant with the spec." Read the entire thread here:
                http://lists.xml.org/archives/xml-dev/200505/msg00257.html


                Want to learn more about why people are switching to Stylus Studio? Visit
                http://www.stylusstudio.com/switch/! Or take a moment to write and tell us
                why you chose Stylus Studio -- or anything else that's on your mind --
                we'll respond! Drop us a line at stylusstudio@stylusstudio.com

                Posted by m.david at 06:56 PM | Comments (0) | TrackBack

                May 22, 2005

                Someone please tell me what 'Tab Browsing in Internet Explorer' actually means before I spend yet another wasted hour trying to find the answer that doesn't seem to exist... ANYWHERE!

                [UPDATE: Apparently there's and MSN Toolbar team blog (hmm, who knew..) and in this blog there is definitely clarification as to what the advertised Tab browsing feature is all about... Yep, its actually the tab browsing made famous by Firefox so I guess I have to renegotiate my stance to instead state:

                Please don't "announce" a product [UPDATE: oops, this should read "product feature"] as part of a public advertisement until it actually is one. Thanks :D]


                [Original Post]
                Except on this ad on the MSN home page:

                tabbrowsing.JPG

                You may need to click the image to see things more clearly. And if you do you should quite clearly see:

                Tab browsing in Internet Explorer

                as one of the key features. Now I realize that Microsoft has a patent on "Tab browsing" that has nothing to do with UI tabs and everything to do with jumping from one link to the next in document order using the tab and shift + tab to cycle forward or backward through the document's anchor tags. But IE has had that since... 4.0? 5.0? I'm left to guessing but I'm almost positive this feature was available in the same browser that, when installed, placed that *WAY AHEAD OF ITS TIME* channel bar on our desktops that we all thought was cool... for about an hour... at which point we spent another hour trying to figure out how to get it off our desktop.

                Of course in the '96/'97 time frame (IE 4.0 era) we were still getting used to the idea of "Going to a website" and I think it was simply too much overload for us to think of the web "coming to us" via "Push" mechanisms which is how the Channel Definition Format served up via the Channel Bar on the Windows 95 desktop, Handheld PC's (the original WinCE device), Palm-sized PC's (the renamed PalmPC which was how MS and Palm Computing solved what would have been a nasty court battle... this same general form factor then became the Pocket PC which... wait, why am I telling you all this... oh, Channel Bar!) was being marketed. Anybody remember Pointcast? Same idea, without the XML... and A LOT MORE ANNOYING! Of course in the mean time Dave Winer was busy trying to figure this whole medium out which a few years later he did and this is why I am now writing this post... well, this is why I created a blog which, in essence, is the medium but not necessarily the reason for this post. Thats probably enough analyzing for one day, isn't it... anyway :D

                Its funny to me how something so simple as a paradigm shift and terminology usage can be the decisive factor as to whether or not a technology becomes adopted (apparently I simply have to keep analyzing this damn thing to death. Sorry.) If the developers of the Channel Definition Format had stepped backed just a few more feet maybe they would have realized what eventually required the genius of Dave Winer to finally realize (or maybe I should say vocalize?) that it wasn't the technology that was flawed but the way the technology was being "pushed" onto the consumer instead of letting the consumer pull only the pieces that she or he had interest in. Using the "paper delivery" concept as justification disregarded the fact that once the paper boy/girl has delivered the paper its then up to you to pick it up and choose which parts seem interesting enough to read. Back in the day I guess they figured that after they deliver the paper to your doorstep the paper boy/girl would also be required to wait for you to wake up (and ring a bell or something just as annoying if you didn't come and get the paper when they wanted you to) and, while sitting on your lap, turns the pages for you, tells you what you are going to read, and then rings that damn bell again if you lost even the slightest of focus... Come to think of it I'm surprised Pointcast lasted as long as it did.

                And this has what to do with Tab browsing?

                I have no idea... While adding even more text to the "how'd we get here in the first place" heap is something you can never say "ENOUGH! We get it... please stop telling us yet again how we got to where we are... we know... can we please move on"... Um, actually, no you can say that exact statement and be spot on so I will take it upon myself to end this nonsense right now.

                Going back to my plea for help... Can someone please shed some light onto what Tab browsing means in regards to the new MSN Search Toolbar for Internet Explorer? If that's just a "clever" MS marketers attempt to use an 8 year old technologies connection to what most people think about when they hear "Tab browsing" then can I suggest one thing? You're not clever. You're stupid. Furthermore you should be fired for coming up with something so rediculous.

                Then again maybe there is Tab browsing as part of the new Toolbar and I simply am incapable of figuring out how to either turn it on or at very least find ANY other reference to it within the documentation, MSN.com, Microsoft.com, or any other generally related sites. Was this something that was going to be a surprise and then got pulled at the last second but someone forgot to tell the marketing department? If yes, I take back what I said about you being fired. If not, I stand rightly firm and inline with my statement. In fact you should not only be fired but your card key should be turned off before Monday morning even rolls around, your office packed up, and the boxes left just outside the double glass doors of whatever building you used to be in with a "BIG PHAT SIGN" on them that reads:

                "TO WHOMEVER THIS STUFF BELONGS TO... GO AWAY! AND TAKE THIS SHIT WITH YOU IN CASE WHATEVER YOU HAVE IS COMMUNICABLE VIA SOME SORT OF SOMETHING OR OTHER THAT'S RATTLING AROUND INSIDE... BLAAAHHHHH!!!"

                Enjoy your Sunday :D

                Posted by m.david at 08:25 AM | Comments (0) | TrackBack

                So much for the 'Spirit of Open Source'

                Netscape patches 1-day-old browser | CNET News.com

                "If security is important to you, this demonstration should show that browsers that are redistributions of the official Mozilla releases are never going to give you security updates as quickly as Mozilla will itself for its supported products," Goodger wrote."

                Take that same statement, replace browser and Mozilla with CLR and Microsoft/.NET and you've got yourself a statement that every single naysayer and disbeliever of the standardized intentions of MS is salivating for some MS Exec to state so they can pounce on them and say "SEE!!!! I told you they're the Evil Empire!!!"

                [NOTE: The following is the same quote from above with a few words changed here and there to make a point... THIS IS NOT A REAL MS QUOTE]

                "If security is important to you, this demonstration should show that CLR implementations that are re-creations of the official Microsoft .NET releases are never going to give you security updates as quickly as Microsoft will itself for its supported products," some targeted MS Exec wrote."

                Careful Mozilla... you're starting to sound a little proprietary-esque, a little annoyed, and a lot like what you claim as a reason and need to develop the open source Mozilla and now Firefox browsers in the first place.

                I'm not taking you to task, I'm simply suggesting that if your intentions are what you say -- and I don't doubt they are... sounds more to me like you're probably just a bit annoyed by people taking your stuff and calling it their own... understandable, for sure. -- then you simply need to be a little more careful in how you state things. As one who has found (more times than I care to admit) his own words taken to mean something that was never intended I can assure you people will most certainly (and in most cases innocently) take your words and turn them into something quite different if you give them the opportunity to do so... ESPECIALLY when your in the "BigManOnCampus spotlight" like you are now.

                For a well seasoned reporter, PR exec, and/or Spin-Master all that is needed is a few well placed ellipsis teamed with an unfortunate sequence of letters and words that when taken out of context turn you from Angel to Demon in a matter of milliseconds... it sucks to be in that position, I realize. But its where you are so, for what its worth, there you have it. You've done such a fantastic job of creating the worlds best web browser (IE does have you beat as an application development and web-based application hosting environment but your'e catching up and they have the entire Win32 API and .NET platform to work with, something you chose specifically not to target, and for good, sound, security-based reasons so don't read too much into this statement...) and as such it would really suck to see you all demonized in any way, shape or form... and I promise you their are 100's and maybe even 1000's who are watching and waiting on every word you speak to find that golden sound byte that wins them a promotion and you a special spot on the list of celebrity inpatients at Betty Ford. After all you've done you don't deserve that type of treatment (the "slammed in the headlines" treatment as opposed to the Betty Ford variety... lets hope you don't end up needing that! Avoiding sound bytes like the above will certainly lean well into your favor in this regard.)

                Keep up the *GREAT* work!

                Posted by m.david at 01:25 AM | Comments (0) | TrackBack

                May 21, 2005

                via Elliotte Rusty Harold | Um, I think you missed a spot...

                Cafe con Leche XML News and Resources

                Netscape has released version 8.0.1 of its namesake web browser for Windows. This release is based on Firefox 1.0.4 instead of 1.0.3, Apparently someone at AOL finally got enough a clue pounded into their head to realize that shipping a browser with a known security hole just to meet a deadline and a code freeze wasn't so smart. Any users should upgrade, but most people should probably just use Firefox and forget about Netscape.

                Hmmmm.... I'm guessing that maybe Elliotte chose to stick with his Firefox 1.0.4 install and as such missed this little dialog during the setup process:

                NetscapeMeetsIE.GIF

                In case the text is inelligible let me put this into plain text:

                For trusted sites, the Netscape Browser sometimes switches to the Internet Explorer rendering engine to ensure maximum functionality for that site. You can disable this behavior by checking the box below and the browser will always use only the Firefox rendering engine.

                So what you're saying is I now can view content in the same tabbed-based user-interface I've come to love in Firefox and yet when a site has been designed for IE or implements ActiveX Controls that I can't use in Firefox I can just switch to IE inside of the same UI???

                NSandIERenderEngineSwitch.JPG

                [NOTE: Mark my words... Shift + Ctrl + E is the "three finger salute" of the next generation. Oooooh! Thats just BEAUTIFUL!!! :D (you'll see what I mean when you install it... oh so long overdue... THANKYOU NETSCAPE, Mercurial, and Kurt(actually, I don't even know what part Kurt played with this release as he is brand spanking new to this fantastic specimen of a ThinkTank/DevShop filled with more talent (from what I understand) than Yankee Stadium has seen throughout its entire history... if you can compare hackers to baseball players that is) and I have no doubt he knows the right people to give the praise and thanks too... I'd hang out over at his blog as no doubt he will have things to say about this in the not too distant future)]


                Apparently thats exactly what they're saying. Sorry, but this is much more significant than "Any users should upgrade, but most people should probably just use Firefox and forget about Netscape."

                This is something *EXTREMELY* significant and my hat goes off to my good friend Kurt Cagle and his new company Mercurial for putting together something that at *VERY LEAST* deserves a "tool for every webdev's toolbox" recommendation. But this is much more than that as this brings a level of integration to the web browsing world that is flat out astounding when you consider just how much content has been developed for IE that can not be rendered in Firefox and yet how reliant many of us have become on Firefox for a good majority of our web-browsing. I'm sorry, but this deserves a hell of a lot more recognition than "forget about Netscape."! In fact I would go as far as stating the exact opposite with "Welcome back Netscape! Browser war? What browser war? Oh, yeah, that... you'd be surprised what an ink pen and a talented team of lawyers can accomplish when everyones looking the other direction..."

                "Make Netscape, Not War!"? No, definitely not... But "Download Netscape, What War?" might work... Either way, it seems the web is still a frontier with many, Many, MANY uncharted miles of wide open spaces still left to explore... now navigable and explorable via a handy two browser convenience pack.

                Ohhhhh.... theres the sticking point...

                System Requirements

                Operating Systems Windows XP, Windows 2000, Windows 98 SE, ME

                Guess thats probably why the install never occured (I'm assuming that Elliotte is probably either a Mac or Linux guy?) Ok, nevermind... I can see now why this little tidbit was probably missed or skipped over as it doesn't do a whole lot of good for someone who can't install it to spend time learning about all its features...

                But for those like myself who spend their time 50/50 between Linux and Windows or for the remaining 85% of the world who believes that Linux is for Hackers (and consider "Hacker" and "Criminal" as one in the same), Mac for those who believe that upgrading a computer involves clearing the spot where the "old" Mac was and unpacking the box with its replacement model (which is 1/3 the size, weight, and opacity of its predecessor) and Windows to be useful because they know how to use it and thats all that matters... This is something pretty significant.

                Welcome back Netscape! Let's see what happens next...

                Posted by m.david at 07:49 AM | TrackBack

                If any of you doubt the power of the Common Language Infrastructure (CLI) maybe these screencasts might help

                IKVM.NET Weblog - Cross Language Debugging in MonoDevelop

                To ensure I don't get in the way of who posted what first I will simply let Jeroen's post do the "chain of command" talking:

                Lluis Sánchez posted some cool screencasts that demo cross language debugging in MonoDevelop [via Miguel de Icaza].

                Wow and Wow!

                A couple weeks ago I speculated...

                ...that by years end we would see a beta of a Microsoft built Java 1.4/5/6 -> CIL (Common Intermediate Language - > Buy < this book if you don't own it already) compiler. Recent events would lend well to the idea that this may not be that far from reality. But with each release of Jeroen's IKVM.NET project I become more and more convinced that such an effort, while fantastic if it does happen, may not be all that big of a deal if it doesn't. What makes this statement all the more compelling and believable is the announcement of the Harmony project (for those who slept the last two weeks away, Harmony is a J2SE project announced recently by the Apache foundation) and the fact that Jeroen is a part of the core set of developers who have volunteered their services if this project comes into existence. After many inquiries, including one from myself, Jeroen made a May 9th post to help bring a better understanding to what this project is all about and, what seemed to have been "the question of the hour", was this a "start from scratch" project or would there be an effort to merge with the Gnu Classpath project... the latter is the case but I would definitely follow that link to gain more insite. As to why put the effort into a J2SE project when your core interests exist within the .NET framework? I'll leave that for Jeroen to answer himself but it would seem to me that a complete open source J2SE 5 implementation would mean a complete J2SE-based byte-code to CIL conversion via IKVM.NET. Seems as compelling a reason as any tp put forth the effort but please don't mistake my speculation for fact as I am most definitely speculating.

                When you look at the list of .NET-enabled languages and realize just how much more the ECMA-standardized CLI brings to the open standards development world it really makes you wonder why people walk away with the sense that Microsoft is the bad-guy. I don't want to bad mouth Java or Sun because I believe that (especially in a 1.4+ J2SE world) Java is a really powerful language that has been developed by an amazing group of software engineeers. But one-size doesn't fit all, especially when you bring programming paradigms into the picture (e.g. Functional language development, Object-Oriented development, Component-Oriented development, Aspect-Oriented development, etc...) and when you have designed a system in which all of these paradigms and associated languages have the ability run using a Common Language Runtime(CLR) and as such interact with any other language this runtime supports, calling upon its objects, routines, functions, methods, etc.. I simply can't imagine a more perfect programming paradigm and as such, platform in which to build the future of software applications upon.

                Now if the CLI was not standardized and projects such as Mono, dotGnu (Portable.NET), in some regards the OCL Project and others did not exist we would be looking at a situation that is much different, much more proprietary, and as such deserved of every second, third, and fourth "yeah, but..." look the suspicious effort invoked. But we're not. And when you see projects like those showcased in the above screencasts and realize that these are being run on top of a Linux kernel, using open source tools, led by open source luminaries such as Miguel de Icaza, et. Al. you simply can not question the fact that a world build on top of the CLI is pretty fucking cool world!

                At least thats my opinion anyway. ;)

                Posted by m.david at 05:45 AM | Comments (0) | TrackBack

                May 20, 2005

                By 'If' I'm assuming 'If someone comes up with a coherent spec that omits the type info, it could somehow make its way into the 4Suite post 1.0.' to be the condition and the result if the condition is met?

                Copia

                Ok. I'm up to the challenge.

                I think its safe to assume that Uche knows a thing or two about programming. So, in reality, a simple list of features and capabilities that need to be present should be more than sufficient.

                But before I go and spend my time making a feature list of things that must be present I should make sure that by doing so the desired effect would be reached -- that of finding support for XSLT 2.0, or at least a type-less variant of the XSLT 2.0 draft, inside of 4Suite, something I think we all can agree would be absolutely *FANTASTIC* and worthwhile of any effort that might encourage such a development effort.

                But I need to be careful here. What I might think is being helpful might instead be construed as something entirely different and do more damage than it would good. Obviously there are plenty of lists of XSLT 2.0 features out there that could easily be used as a starting point so writing Yet Another XSLT 2.0 Feature List is not something that I think is really going to do much good and could potentially be viewed as something quite different so taking such an approach is really risky and to be quite honest, stupid.

                I could take the "its all simply a matter of preference... for those who like programming using XML, XSLT 2.0 is just what the doctored ordered. For those that don't, give XQuery a try." But that's not ballsy enough. Its too cliche', too passe', too blah... And such a statement disregards the fact that there are a lot more languages, like Python, that do offer a lot to the world of XML developers that in many ways could be considered preferable.

                So what then? How does one take on the task (and not completely waste his time in doing so) of providing a working specification that someone like Uche, in whom a lot of people, including myself, have a lot of respect for, can then take and build support into one of the more powerful open source XML server platforms available.

                This is something that is going to require thought. I think that a well thought through argument in favor of XSLT 2.0 coupled with good sample code could definitely help. So maybe thats where I should start.

                But before I do that (and I think its the right approach) can I suggest one thing? The power of XSLT 2.0 and XQuery starts with XPath 2.0. As much as EXSLT offers the XML developer, XPath 2.0 is not a part of this project. So thats where my weekend project is going to start. Lets rip through the XPath 2.0 specification and get down to the nitty-gritty. What does XPath 2.0 offer the world of XML software development that XPath 1.0 leaves behind? Conditional logic is one piece but theres more than just conditional logic so lets make this the focus and then move forward from there.

                Uche, as mentioned, I have a great deal of respect for you. I think that finding support for XSLT 2.0 from the likes of Fourthought inside of 4Suite.org is something that can not be seen as anything else but a *HUGE* boost to the future of XSLT 2.0. I hope that over the next few days that what I develop can be seen for what it is, that of convincing an influential person such as yourself that developing support for XSLT 2.0 is something very worthwhile. I don't want to make the same mistake that I have in the past of not thinking through my statements and simply publishing what happens to be on my mind at that moment only to discover that I was *COMPLETELY* off-base. Thus, the current caution I have in place to just "pour" my thoughts onto the screen and hope that in-and-of itself this is enough. It wouldn't be. But with the proper time I think I can definitely have at very least a fighting chance. So, I guess we shall see. :)

                Wish me luck everbody! :D

                Posted by m.david at 06:26 PM | Comments (2) | TrackBack

                'If you're not nice to me I'll move over to the dark side' | The creative mind of a child

                In a recent conversation my sister Elizabeth (third from right) had with her 5 year old son he decided that whatever it was she was asking of him just wasn't something he wanted to deal with so in reply he stated:

                If you're not nice to me I'll move over to the dark side!

                With an obvious influence from the latest Star Wars release there's still a level of creativity involved with that statement you simply have to appreciate...

                I have no doubt that the circumstances that led up to this statement and then the follow-up punishment were, in his mind at least, no laughing matter. But any of you who are parents no doubt understand that it was all my sister could do to keep from losing-it-in-laughter as this "time-out" penalty was invoked. Personally I would have been tempted to take him out for ice-cream for coming up with something so creative but I guess thats the difference between Mom's and Dad's... one see's need for punishment when the other see's need for praise. Probably a good thing the Momma ALWAYS has the final say (no, I haven't been influenced at all by my sisters... I have no idea what your'e talking about ;)

                God love the children of this world for helping bring life into perspective... I have no doubt that He does (and was probably laughing at this one as well. :)

                Posted by m.david at 03:05 PM | Comments (0) | TrackBack

                Praise for two new titles on my bookshelf | Beginning RSS and Atom Programming and SVG Essentials

                I just got back from Borders where I picked up a copy of Danny Ayers and Andrew Watt's (who, by the way, deserves some sort of award for coming up with *BY FAR* the most creative domain name/subject usage I've seen in a long time!) new title, "Beginning RSS and Atom Programming." Earlier in the week I received in the mail a copy of "SVG Essentials" by J. David Eisenberg. I just want to quickly give a shout out to all three of these authors for producing two *EXTREMELY* well written titles containing all sorts of fantastic bits of content and reusable code. I spent a good portion of yesterday reading "SVG Essentials" and found it absolutely perfect in regards to covering the ins and out of SVG programming and while I have only spent an hour or so skimming "Beginning RSS and Atom Programming", even with a good deal of development experience using both of these feed formats I have found some nuggets of insight that undoubtedly will find there way into my daily programming routines.

                Cheers to all three of you for a job *REALLY* well done :)

                By the way, in regards to SVG development without a doubt you should look into Kurt Cagle's "SVG Programming: The Graphical Web" which is something I have had for a while, receiving my copy directly from Kurt a while back (thanks Kurt!) and, until a few days ago was the only SVG title on my shelf. Both of these titles have there value and will continue to be well used over the next few months as I become even more familiar with this area of software development.

                Posted by m.david at 10:55 AM | Comments (2) | TrackBack

                May 18, 2005

                Blast from the Past - May 18th, 1980: Where were you?

                Sthelens3.jpg

                As a kid I took to science like a fish to water so to be living in Vancouver, Washington, USA - or about 30 some miles south of Mt. St. Helens - during the 1980 eruption was something of a treat. I remember discovering all of the valuable uses of ash after listening to one of the local T.V. stations list off 20 or so "did you know" items showcasing all of its benefits (we were already aware of the downside items.) Vancouver didn't get hit by ash too hard, but hard enough it required dust masks and it was definitely enough to keep me occupied for weeks on end. I can't remember all of the details but I do remember how happy my parents were that I discovered that ash acted as a great way to clean up the oil stains from the cars in the driveway :)

                Twenty-Five years. I can't believe it has been that long...

                Happy Anniversary Mt. St. Helens! You've kept a lot of us captivated for many, many years, and it seems nothing has really changed :)

                [NOTE: In addition to the above link, for those who havent seen them already I have some arial pics from a while back that you can find here.]

                Posted by m.david at 05:45 AM | Comments (0) | TrackBack

                May 17, 2005

                Credit where credit is due

                I want to quickly point out some follow-up comments left by Eve Maler in regards to my post from yesterday. She specifically points out others at Sun who deserve credit for the work that has brought about the Liberty Alliance support from MS announced on Friday. Please see her comments for more details.

                Does anybody have a pointer that I can point to or know who I can contact to give proper credit to the MS employees responsible for this effort?

                Thanks to everyone who played a part in this! I'm not sure if we will realize immediattely just how significant this effort is but no doubt we will understand over the coming months and into the next year when we suddenly find it a lot easier to access the webs content while maintaining proper security in doing so.

                Cheers to you all :)

                Posted by m.david at 08:02 AM | Comments (0) | TrackBack

                via XML-DEV | ANNOUNCE: DataDirect XQuery Public Beta

                Now this is the kind of announcement from Data Direct I can stand behind:

                As Program Manager of DataDirect XQuery, I'm very happy to announce
                that the public beta of DataDirect XQuery is being released
                today. Java programs routinely exchange data as XML, but store and
                query data using relational databases. DataDirect XQuery is designed
                to let you use XQuery in Java applications using the XQuery API for
                Java, the "JDBC for XQuery". It can query both XML and relational
                sources, and returns XML results as text, DOM, SAX, or
                StAX. DataDirect XQuery is simple, portable, and fast.

                You can apply for the beta program here:

                http://www.datadirect.com/products/xquery/xquerybetahome/

                In the beta, we support the following databases:

                Oracle 9i (R1 and R2) and Oracle 10g

                DB2 Universal Database (UDB) 8.1 on Windows NT, Windows 2000,
                Windows 2003, Windows XP, UNIX, and Linux

                Microsoft SQL Server 2000 (including SP1, SP2, and SP3a)

                The beta is based on the 11 February 2005 Working Draft of XQuery[1]
                and the Early Review Draft of XQJ[2]. The following tutorials are
                helpful for coming to grips with these standards.

                XQuery Tutorial
                http://www.datadirect.com/developer/xquery/xquery_tutorial/index.ssp

                XQJ Tutorial
                http://www.datadirect.com/developer/xquery/topics/xqj_tutorial/index.ssp

                Hope this is of interest!

                Jonathan Robie
                Program Manager, DataDirect XQuery
                www.datadirect.com

                [1] XQuery - 11 February 2005 Working Draft
                http://www.w3.org/TR/2005/WD-xquery-20050211/

                [2] XQuery API for Java (JSR-225)
                http://www.jcp.org/en/jsr/detail?id=225

                Posted by m.david at 03:56 AM | Comments (0) | TrackBack

                May 16, 2005

                Yet One More Thing We Have Eve Maler To Thank For

                05/13/05 - Sun and Microsoft Announce New Identity Specifications and Additional Measures for Product Interoperability

                CEO Steve Ballmer today announced a series of measures to enhance product interoperability, including the development of new specifications that enable Web single sign-on (SSO) between systems that use Liberty and WS-* Web service architectures.

                The very last contract I took at Microsoft was with the Passport team which, I'm assuming, will probably become fairly transparent with the Libery Alliance offerings. I don't know any technical details but I'm guessing that Eve Maler might have some extended information in this regards as its my understanding that she has something to do with Sun's connection with the Liberty Alliance. As such it seems we probably have Yet One More Reason to be thankful to Eve for all that she has done to help bring sanity to the insane world of software development and standards.

                As always, Thanks Eve!

                Posted by m.david at 07:15 AM | Comments (2) | TrackBack

                May 15, 2005

                First real Saxon.NET sample code to play with

                As TechEd and the Saxon.NET Birds of a Feather session quickly approach it seems its time to start pushing hard at both finalization of the bits as well as sample code to help gain some momentum as we begin to get deeper into the year and, while its unknown exactly when, a little but closer to the final XSLT 2.0, XPath 2.0, and XQuery specs, support for which is available for all three in (of course) Saxon and as such Saxon.NET.

                This is just a stopping point for the day on a library which has quite a few satellite libraries that add further extension and functionality that are already well under development and will hopefully be available in the next week or two for further consumption and distribution.

                Couple things to note. I realized the other day that it really made a lot more sense to move away from the ‘org.x2x2x.Xml’ namespace and instead use ‘Saxon.Xml.Xsl’ as the prior[um, that would be latter would’nt it… oops] fits much more in line with what the project is all about and more directly into the .NET namespace naming conventions instead of the Java classpath conventions. Before I go and make any sort of announcement that this is the final name space usage I will need to run things through both DonXML and Dr. Kay. If things change I will certainly let you know. [PLEASE NOTE: To view the code properly please view this post in its normal .html format… I need to fix the issues with the way code doesnt get handled well on the main page but I am almost done with the next redesign so Its probably not going to happen in the state it lives in now… but the new designs is A LOT better so I think it’ll all be good :)]

                Note: the first part of this was commented directly in the code/editor… thus the funky slashes that make things seem abnormal.

                // All code has been developed by M. David Peterson for and as part of the Saxon.NET project // What you do with it is up to you. At present time (May 15th, 2005) this is still // under development with fairly extensive planse as far as just how far we plan to take this // project. But this is a decent start at understanding the ins and outs of developing using // Saxon.NET from a C# perspective.

                // With TechEd the Birds of a Feather session proposed, planned, // promoted, and etc… by DonXML (given the fact that were 3 weeks away from the start) its obviously // time to put some serious development effort such that there is lots to play with at the BOAF. I have // one other major project that I plan to split my time with Saxon.NET development over the next 3 weeks // which should lend well to probably a good 80-100 hours of devtime before the BOAF session which hopefully // should mean both extensive progress with extension projects as well as Saxon#… Lets hope anyway. :)

                // Things to note: // I’ve implemented some of the new functionality provided by the XML-MVP group. In particular I have focused // on XPathNavigatorReader class library for the many nice little touches as well as MAJOR enhancements it has in // regards to pulling some extremely useful features into the XPathDocument arena and as such making it by // far and beyond the definite choice for high powered handling of XML ESPECIALLY in regards to // pipelining as you gain all the speed and realiability of XPathDocument and XPathNavigator with the // cability to gain direct access to the underlying XML for outputting in various regards with ease and // simplicity (which, before this meant basically converting // everything in front of your current Node position to a string for output to a new format and the reloaded into that “version of XML ;)” serilization to then move on to the next item on the list.

                // As many of you undoubtedly know when you’re pipelining XML around // from one process to the next theres an obvious disadvantage that comes from conversion from one format to another // ESPECIALLY when a lot of the times this also means losing your current position within the node-set, that if // wasn’t lost would bring you that much more performance gain. This class brings you this, caching and serialization // benefits and… hmmm… theres seems to be something I’m missing. I guess it’ll give you something to // look forward to finding out for yourselves as without a doubt this is something I plan to use A TON // and would recommend to anybody who does a ton of XML work within .NET to consider the same. This is // some really well thought out and implemented code. My hat goess off to the XML-MVP’s for a job EXTREMELY well done!

                // First file, Saxon.Xml.Xsl.cs (I’ll provide a zip file of all of this at the bottom of the page)

                using System;
                using System.IO;
                using System.Xml;
                using System.Xml.XPath;
                using System.Xml.Serialization;
                using System.Collections.Specialized;
                using Mvp.Xml.Common.XPath;
                using Microsoft.CSharp;
                using System.CodeDom.Compiler;
                using javax.xml.transform;
                using javax.xml.transform.stream;
                using net.sf.saxon;
                
                
                namespace Saxon.Xml.Xsl
                {
                  [Serializable]
                  public class XslTransformer : CSharpCodeProvider
                  {
                    //Transformation data variables
                    private string srcXML;
                    private string srcXSL;
                    private NameValueCollection xslParams;
                
                    //Constructors
                    public XslTransformer(){ }
                
                    public XslTransformer(string srcXML, string srcXSL, NameValueCollection xslParams){
                        this.srcXML = srcXML;
                        this.srcXSL = srcXSL;
                        this.xslParams = xslParams;
                    }
                
                    public void XslParams(NameValueCollection xslParams){
                        this.xslParams = xslParams;
                    }
                
                    public void XmlDoc(string srcXML){
                        this.srcXML = srcXML;
                    }
                
                    public void XslDoc(string srcXSL){
                        this.srcXSL = srcXSL;
                    }
                
                    public XmlReader Transform(){
                
                      StreamSource inputXml_Source = new StreamSource(new java.io.FileInputStream(srcXML));
                      inputXml_Source.setSystemId(srcXML);
                
                      StreamSource inputXsl_Source = new StreamSource(new java.io.FileInputStream(srcXSL));
                      inputXsl_Source.setSystemId(srcXSL);
                
                      StringReader reader = new StringReader(DoTransform(inputXml_Source, inputXsl_Source, xslParams));
                      XPathDocument doc = new XPathDocument(reader);
                      XPathNavigator nav = doc.CreateNavigator();
                      XmlReader XPathReader = new XPathNavigatorReader(nav);
                
                      return XPathReader; 
                    }
                
                    CSharpCodeProvider provider = new CSharpCodeProvider();
                    //ICodeGenerator generator = provider.CreateGenerator();
                
                    protected string DoTransform(StreamSource Xml, StreamSource Xsl, NameValueCollection parameters){
                
                      java.lang.System.setProperty("javax.xml.transform.TransformerFactory", "net.sf.saxon.TransformerFactoryImpl");
                
                      StreamResult outResult = new StreamResult();
                
                      java.io.ByteArrayOutputStream outputXmlResult = new java.io.ByteArrayOutputStream();
                
                      outResult.setOutputStream(outputXmlResult);
                
                      TransformerFactory trans = TransformerFactory.newInstance();
                
                      Transformer transformer = trans.newTransformer(Xsl);
                
                      foreach(string paramName in parameters.AllKeys){
                        string paramValue = parameters.GetValues(paramName)[0];
                        transformer.setParameter(paramName, paramValue);
                        }
                
                      parameters.Clear();
                
                      transformer.transform(Xml, outResult);
                
                      return outputXmlResult.toString();
                
                    }
                  }
                }
                

                // second files test.aspx

                <%@ Page Trace="false" Language="C#" Debug="false"%>
                <%@ Import Namespace="System.Xml" %>
                <%@ Import Namespace="System.Xml.XPath" %>
                <%@ Import Namespace="Saxon.Xml.Xsl" %>
                <%@ Import Namespace="System.Collections.Specialized" %>
                <script runat="server">
                    string xmlSource = "./atom.xml";
                    string xslSource = "./index.xsl";
                    string transform;
                
                    void Page_Load(Object sender, EventArgs e) 
                    {
                        NameValueCollection xslParams = new NameValueCollection();
                
                        xslParams.Add("foo", "test");
                        xslParams.Add("bar", "test two");
                
                        XslTransformer transformer = new XslTransformer();
                        transformer.XmlDoc(Server.MapPath(xmlSource));
                        transformer.XslDoc(Server.MapPath(xslSource));
                        transformer.XslParams(xslParams);
                
                        XmlReader resultDoc = transformer.Transform();
                        buildOutput(resultDoc);
                
                    }
                    void buildOutput (XmlReader resultDoc)
                    {
                        Response.ContentType = "text/xml";
                        XmlTextWriter XWriter = new XmlTextWriter(Response.Output);
                        XWriter.WriteStartDocument();
                        XWriter.Formatting = Formatting.Indented;
                        XWriter.Indentation = 2;
                        String PItext = "type=\"text/css\" href=\"/xsltblog/ie-namespaces.css\"";
                        XWriter.WriteProcessingInstruction("xml-stylesheet", PItext);
                        XWriter.WriteNode(resultDoc, false);
                        XWriter.Flush();
                        XWriter.Close();
                    }
                </script>
                

                The MVP-XML Library can be downloaded here.

                The sample file

                <?xml version="1.0" encoding="UTF-8"?>
                <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
                    <xsl:param name="foo"/>
                    <xsl:param name="bar"/>
                    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
                    <xsl:template match="/">
                        <my:root xmlns:my="http://css.mdptws.com/xsltblog">
                            <my:tag>This is a normal tag</my:tag>
                            <my:tag id="red">MY RED TAG</my:tag>
                            <my:tag id="blue">MY BLUE TAG</my:tag>
                            <my:tag class="bold">This tag has bold text</my:tag>
                            <my:tag class="italics">This tag&#8217;s text is in italics</my:tag>
                            <my:tag><xsl:value-of select="$foo"/>hello</my:tag>
                            <my:tag><xsl:value-of select="$bar"/>hello</my:tag>
                        </my:root>
                    </xsl:template>
                </xsl:stylesheet>
                

                [UPDATE: I just realized you will need to change the namespace in this file back to the namespace Dean uses, or vise-versa, for this sample to work correctly in your browser] The above is a modification of the IE7 CSS Namespace project from Dean Edwards. As I’m not exactly sure what the distribution terms are in regards to this particular piece, while I have no doubt they’re generous I rather both play it safe as well as send as much recognition as possible to Dean for all of his hard work and effort on all of this. You can find the particular files in question here [NOTE: In particular this is the ie-namespaces.htc project half way down the page, the download link is at the bottom] and the directory for all of his projects here.

                By the way, in the ASP.NET sample I just used a random Atom feed that happened to be in the folder I was working in for the source XML as this particular test was focused, for the most part, on getting the little tweaky bugs worked out of implementing a Saxon.NET based transformation and then taking the resulting XML and tie it together within the .NET XML Libraries to be processed further before being output. In particular the issues at hand were:

                a) ensuring the proper mime-type was set via the Response.ContentType as Firefox/Mozilla will not foregive you if its not set to text/xml where as IE seems to set this particular piece aside. I can actually understand why as this is one of those support headache deals where you spend half your support budget on explaining to people why and how to change the ContentType in the Response stream — At some point, especially when you have 95% marketshare you have to let go of some of the things that you know are costing you more time, money, and headaches and in reality more damage is being done to the ideals behind standards by the frustration than could ever be gained back by forcing users into banging theirs and your head against the wall for 6 hours until they finally get it or finally give up and curse your very name for years to come. [1]

                You cant win.

                b) wow, that was off topic. Hmmm… surprising… ;) okay reason 2 for using this as a litmus test (beyond the fact that the effect on the screen kind of has a litmus papers resemblance) was that it was a test in integrating a completely transformed stream from within Saxon.NET, passing it to another process to have an XML declaration and processing instruction added to it such that when it arrived to the end user it would properly render the CSS enhanced XML as opposed to just displaying the text inside of the elements on the screen (as will happen if the right things don’t happen in the right order). This was one a bit more interesting as I spent a good hour or so beating the XML delaration into submission at which point it finally gave in and took its proper position on top of the PI instead of underneath it which, suprisingly, IE was just fine with but Firefox was not.

                Shocking.

                c) the final test that actually would have been true no matter which direction I chose for the development test was finding a smooth transition from transformation to final output to the Response stream. I found the MVP-XML libraries (or rather used them for the first time) and that was plenty to do the trick. It took some playing to get things to go the way they needed to but the MVP’s have done such a great job of providing comments and samples that most of whats there is (in regards to XPathNavigatorReader) a direct copy and paste and for the most part it just worked. I think the only problem I ran into was I had declared the wrong return type which was my own fault so again, hats off to the MVP’s[left hand side, bottom portion of column] for a job well done!

                K, heres the compiled library with the two source files[update:link is fixed and zip now contains C# source where at first I forgot to include it [although it was available to copy and paste of this page so maybe you just did that.] If you downloaded it and found the .cs file missing its there now. Sorry for the hassle!][oops, maybe not… lets see if this one works]. The most recent Saxon.NET bits are from a few days ago and can be downloaded here. As mentioned (and in summary) you will need the MVP-XML Library and the ie-namespaces.htc files from Dean Edwards.

                I plan to go underground for a day or two while I focus some serious time on two projects, Saxon.NET and another you don’t know about so I’ll leave the mystery for another exciting day :)

                If you have questions please leave comments on this blog for now as it will keep things in one place as opposed to spread out between blogs and various project sites that will probably go unnoticed for a few days if as I tend to lose track of things from time to time. Yep, yet another shocker. ;)

                With that, enjoy!

                [1][NOTE: The Response.ContentType is different than the “type” attribute as part of the xml-stylesheet processing-instruction which is also an important value but, in reality, for various reasons I doubt we will ever have need to dig any deeper to find out the details, while there is no official text/xsl mime-type this has been the adopted standard for the most part and it will work in both IE and Mozilla as text/xsl and (I believe… Ill have to verify for sure) text/xml. This is actually a dead mime-type as well as things are now moving towards the application/xml+xsl (hmmm… that may not be the right one either… ill need to verify that as well… its close but there seems like somethings missing) mime type which is definitely progress…]

                Posted by m.david at 06:37 AM | Comments (4) | TrackBack

                May 14, 2005

                An extension to my last post

                In my last post I used the word "worthless" to represent most of what I write. Actually, I shouldn't have used worthless as there are those times in which whatever is on my brain at the time does have value and I don't realize it until I get it out on the screen or onto paper. Sometimes the value can only be seen by me and other times it can be seen by others. To me a blog shouldn't be seen, or better said, mistaken as a newspaper, reporting things that have already passed. Instead it should be seen as more or less an ongoing dialogue of the present. Obviously once the present has passed it takes on the appearance of a typical online article, reporting something that has already happened as opposed to representing something that at the time it was written was happening. None-the-less, its obviously my responsibility to recognize that what is currently happening isn't necessarily something to be seen or heard by everyone as opposed to your responsibility to recognize what is reality and what is foobar.

                The Smartness Density Theory was foobar, not to be seen as production code but rather a representation of something that could represent how you might write something for production code, applying the general principles of the sample code but extending it into something real instead of something foo. The study of group dynamics is something that is very real. Much in the same sense that you don't just copy-and-paste foobar code into your editor, compile it, and call it complete this theory represented some ideas that, while its possible they could be used as a starting point would need an extensive amount of reworking, rethinking, and applying the general ideas into something much more real, something provable, and something beyond just a bunch of senseless mumbo-jumbo. Can foobar code be compiled. Of course! But what good is compiled foobar code? Its just foobar. Thats it. Thats its value. Compiling will help prove the theory that its compilable and therefore could be used as a starting point for something much bigger. But the value starts and stops there which is exactly where the The Smartness Density Theory should stop and start. Do I plan to continue the study of this and come up with something more concrete and reliable. No! It was just blah! Just foo. Just bar. Just junk. Just move on.

                I plan to.

                Posted by m.david at 02:35 AM | Comments (0) | TrackBack

                May 13, 2005

                Hmmm.... I didn't realize people would actually take my comments that seriously

                I guess maybe its my tendency to think and speak without thinking if what I am saying is being construed as serious or just in fun. While speaking in person its a lot easier for others to recognize the difference, writing doesn't necessarily lend well to this ease of distinction, especially when you write like I do (pouring the words onto the screen as they are being thought, in most cases laughing about it and then forgetting that I ever wrote it in the first place.)

                If my previous post was taken by any of you to be my way of presenting an actual theory my most sincere apologies. I don't by any stretch of the imagination believe that what I presented was something that should actually be considered as anything other than a way to laugh at the system we have created for ourselves. While it can sometimes be frustrating to watch I realize that the system is in place for a reason and have no intentions of promoting a campaign to up-end this system.

                I think the problem really stems from my te