Experience with technology? If you have both, I'm sure it wouldn't hurt. But my best guess suggests that at this stage, a solid background in politics will look FAR MORE enticing to Governor Romney than will any sort of extensive experience within the technology sector.
The Open-Source Martyr Meets His Fate
Published reports say the Massachusetts state CIO, best known for his plan to move all state documents to the OpenDocument file format, has resigned as of January 9, 2006, about a year before his edict was to become effective.
---
Kurt just pinged me with the link to the above announcement and follow-up commentary from David Coursey (which he (Kurt) then followed with "I finally stopped reading him when I realized that he's about as unbiased as a football cheerleader" :) I think it's safe to suggest we will cover this topic again in an upcoming recording session for the eXplorations podcast. If you haven't already, I would add Kurt's Atom feed to your feed reader as undoubtedly he will have plenty of intriguing follow-up content on this topic.
One thing I will quickly add:
For those unaware, Mitt Romney was the guy that was brought in as the head of SLOC (Salt Lake Olympic Committee) to clean up the mess that came as a result of the now infamous SLOC Olympic scandal from six or so years back. Obviously this particular 'scandal' (although you be hard pressed to get even a pro-Microsoft/OpenXML guy like me to go along with such a label -- but it definitely has caused quite a stir none-the-less) took place while Mitt was already in office. But even still, with plenty of skilled experience with 'smoothing things out', there's no doubt in my mind that this particular clean-up job will be executed with near perfect precision.
With a likely bid for the 2008 Presidential Election, you can hedge your bets we're about to witness something quite magical with this one. If Mitt Romney, a somewhat conservative Republican (although he has his 'liberal-minded' areas as well(UPDATE: Maybe I should strike that last bit... in reading the current state of his Wikipedia entry it seems he has backed away from what I considered to be his liberal-minded side. For the record, I considered his earlier stance on Abortion to be somewhat(<- key word) liberal-minded, which for someone who is quite conservative in nearly all their viewpoints, to allow room for ANY sort of 'Pro-Choice' ideals is enough, in my opinion, to suggest they have 'liberal-minded' areas) can clean up a pretty nasty situation in the SLOC scandal to then convince the fairly hard-core liberal-minded, Democratic Party-heavy voters of Massachusetts to elect him into office, I wouldn't put any political accomplishment out of his reach.
Stay-tuned.
Posted by m.david at 08:53 AM | Comments (0) | TrackBack
They would have been MUST HAVE utilities for 2005 as well. But one of them I only found out about a few hours ago, the other... well, in all honesty... I knew about it, just forgot to blog about it.
Sorry 'bout that! :)
To make up for it, how 'bout instead of making you wade through knee deep text just to gain access to these two Golden Nuggets of Code, I get straight to the point?
[Make Believe Collective Voice of Whomever Reads This Post: Thank God! Yes, that would be great as it will allow us to do something else with our day instead of having to read fourty-seven pages of your phlabble-blabble just to get to the good stuff.]
Wow. Thats a lot of information. And hurtful too. If I wasn't the one who wrote it in the first place I might have actually cried. [Pretty sad when I have to write my own negative feedback to myself. Somewhat psychotic too. Hmmm... something to think about. Well, while I think about that (and consider potential avenues of therapy ;) here's those MUST HAVE links... ;)]
and
Firefox Java Integration Extension
Before I sign off I need to note that the second of the above linked projects, the 'Firefox Java Integration Extension', was discovered and then sent to me via Kurt. Given the Firefox title we tend to pass a lot of links back and forth between each other that relate to Firefox extensions in one form or another. This is definitely one thats got him, now me, pretty excited.
Oh, one last thing... I learned of another project recently thats got the both of us excited as well. I'm taking a few minutes now to write a transformation file for the project of which the project developers plan to integrate into the projects distribution. When they do, I will link to it as the project kicks a$$!
Back to writing (code and books)... Bye for now :)
Posted by m.david at 06:55 AM | Comments (0) | TrackBack
2006 will be the year of XMPP | B.Mann Consulting
The push for realtime: this goes hand in hand with the last point. The super secret part of XMPP is that it's not about IM at all...it's a generalized XML message passing protocol optimized for real-time. Every once of effort to get faster polling of RSS is wasted...it's an asynchronous poll model -- XMPP is the step beyond. I suggested that Plazes throw away it's proprietary protocol and use XMPP directly, preferably using the User Geolocation JEP that has already been defined for exactly such uses. Anything else you want to pass around in real time that can be represented in XML? Like real-time ATOM? Yep, the possibilities are endless.
There are about five or six people who are reading that last paragraph and have the same chills running down their back and the same smile and [air -> nose <- hold-it-back, but let it be known none->the<-less laugh being >> pushed >> (or is it << pulled <<? I always get those two confused. Blip. <<- What? ;) :D from the holes in their nose] just like I do right at this moment, as I don't think that last paragraph could have been more accurate and yet still maintain a sorta 'WoW. OK, who told' aspect to it (who did tell by the way? ;) knowing full well that no one did while at the same time knowing anyone could have [the game has only just begun :)]...
Weel, not-to-worry though, both the identity and security of whomever the Canary happens to be is well on its way to being a non-issue (one of those smiles... no, wait, two of those smiles just got a little bigger knowing they know something very few others do. Isn't this fun! :D)
Alright... I'll give ya'll a little hint/sneek peek at a piece of all of this, but you'll have to figure out the exact nature of what it is and where it fits into the unknown pieces on your own (that sounds like fun, huh?)... We gotta leave some sense of the mysterious ether-in-the-midst(sic). :)
Hint One: Without the nuxle.us the Atom would not because it could not. How would it if it couldn't in the first place?
See my point?
Don't worry, you will. Just keep things finely tuned (and don't forget the TV GUIDE this time, K, and the rest will all just come together without much effort.
Until / > / Jan:One / > / Peace / ,V,,
Posted by m.david at 03:45 AM | Comments (0) | TrackBack
The Amazon Connect program, in beta for the past month, aims to increase the engagement between readers and authors, and between readers and Amazon.com. It provides authors with a channel to market new products to consumers who bought their books in the past, and gives them a reason to visit Amazon.com.
This is FANTASTIC!!! I do find the name "Connect" somewhat of an interesting choice (although not completely off the mark either) given the fact that as the above linked and quoted article later points out, Amazon doesn't allow reader comments nor access to any sort of data feed for the individual or collective authors at present time. But unlike some of the comments quoted by others, I can definitely understand why.
How so?
Well, let me rephrase. I can understand why they wouldn't want to provide an interactive interface for readers to post comments to and it goes far beyond the fear of comment spam. More on this below.
The data feeds?
Ummm, well... thats a tough one as well. On one hand you would want to use the data feeds to draw interested readers to the authors blog in the first place. Then again, I can tell right now that while it may not be immediattely obvious as to why, theres going to be author opposition to anything that might have potential of causing an author to look bad if they don't spend 40 hours a week blogging on Amazon.
Personal blogs are one thing. Generally speaking, while you may get the core group of readers who enjoy your work and look to your personal blog for more information, those numbers are going to be significantly less than they would be on Amazon.
How's that a bad thing?
Well, take the example of Paul Graham. He interacts with his core readers all the time through a service that he links to at the end of each post. Well, article really... While its basically the same kind of thing, you don't find drive-by postings with a link and a few sentences on his site, obviously something you do find on any given blog at any given time. But thats beside the point. While I'm guessing, if you asked Mr. Graham to turn his attention to an interactive Amazon-based blog my best bet would suggest his response wouldn't be one of optimism and excitement.
Huh?
Well, think about it.... The fact that a reader might seek out your blog on his/her own via an online search engine, or through a link put into one of your titles, that number won't be anywhere near the amount of traffic ANY author would receive through an Amazon-based interface. Search engines and links contained in titles will definitely bring plenty of numbers his direction. But on Amazon you're going to get a steady supply of residual visitors who will interact with a blog just because of its ease of accessibility via a site they're already visiting. Its doubtful these same folks are going to be the same ones seeking out their favorite authors via search engines or be all that enticed to visit a link found in one of your titles if it wasn't located on a site they already frequent.
With this in mind, one can expect that your average author can quite happily maintain the traffic coming towards their personal blog. But add residual traffic coming at you in Amazon-sized numbers (speaking literally and figuratively) and you may just as well forget about ever writing another book in your life. While thats definitely going to thwart authors from getting involved, its not exactly the kind of thing Amazon would be wanting to do nor would the publishing companies be on their side if they did. Instead of selling books, they'll end up acting as a free content hosting provider for a whole bunch of pissy authors who now hate them because of their so called "favor" to help them sell more books.
Coming at this from an authors perspective I can tell you right now I plan to get involved with this program as soon as they'll let me through the "door." But thinking this one through, I have serious doubts you're going to be seeing data feeds and comment forms as part of the Amazon offerings, at least any time soon anyway, and more than likely ever. My guess is that Kurt probably feels the same way, although I'll stop short of acting as his voice proxy and let him take the mic on this one as undoubtedly he will have some good things to say about this as well... although it may be a few days as he's currently in "travel mode" dotting the Puget Sound with drive-by visits to the inlaws for the Holidays.
As a side note: Have I ever mentioned just how much I truly love being single? ;) :D (Merry Christmas Kurt :D Enjoying the drive? ;-)
Anyway, I should probably let Kurt concentrate more on the road and less on trying to swerve so he can hit me "on accident" :) and at the same time come back to my own voice on the matter at hand...
I think that this is definitely a cool idea in regards to just the blogs.
But Amazon...
Just in case I'm totally off as to why you haven't implemented them already and you are still "thinking" on this one... in regards to the comments section specifically, and data feeds in general (although I'm no where near the same "Oh Dear God, NO!" level I'm at with the comments section):
Please don't. In fact, if necessary, point me at your Wish List and I'll pick the most expensive item you have on it if you promise me you won't do this. Not so much for my own sake, but having several author friends such as Kurt, Russ, Micah, and others who already have several titles (or as in Kurts case, DOZENS!!! ;) behind them...
Um, lets just say I kind of like them as my friends the way they are and not as bitchy PMS Queens from Hell. I spent the first 18 years of my life in just such a He... errr... I mean... umm...
I've already been blessed with 18 magnificent years such as these. To give me more now would simply be too much. Someone else needs/deserves them WAY MORE than I do, I promise. I do appreciate the sentiment and all, but again...
ANYTHING on your list... It's yours! :)
Wait, scratch that...
I'LL BUY THE WHOLE DAMN LIST! JUST PLEASE PROMISE ME YOU WON'T DO THAT TOO ME!!! I BEG OF YOU!!! WHATEVER YOU WANT, ITS YOURS!!!! KEEP ALL THE BOOK PROFIT IF NECESSARY!
ANYTHING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Thank you for your understanding. :)
Posted by m.david at 08:41 PM | Comments (0) | TrackBack
But with freedom comes responsibility.
This is the most beautifully crafted piece of journalistic poetry I believe I have read in my entire life. It's credited to IBD (Investors Business Daily) from what I can tell, but no author is listed.
The author, whomever it might be, deserves the Pulitzer for this piece. If I have it my way, they're going to get it.
Where was the defense of the "people's right to know" when the issue was who "revealed" the name of CIA desk jockey Valerie Plame and her Bush-bashing, mint tea-drinking husband, Joe Wilson? Then the issue was who was placing our covert agents in jeopardy and who should be indicted and sent to federal prison.
There are times when I wish I didn't have to be such a loud mouth. But I honestly can't help it... Not from the standpoint of lacking self control, although I've certainly been guilty of such criticisms in the past. Instead, however, what I can't help is standing idoly(sic) by while I watch the general masses being led by a handful of (please pardon me for second, but I'm going to break my no profanity in the intro rule because I believe it needs to be said outloud, not hidden from view, even if only partially) complete and total fucking idiots who have sold our freedoms, rights in which millions have fought for, giving their lives because they knew that in doing so millions more would be able to live a life in which is centered around peace, safety, respect for all people no matter their origin or race, the ability to worship the God of our own choosing, even if that means we choose to not believe in such things, and the ability to express our opinions without fear of prosecution, persecution, and/or censorship, including using each era's "printing press" to spread our views to the masses.
It seems, however, that there are those who feel that the underlying essence of the freedom of speech and press somehow allows them the right to put at risk the very foundation in which affords them this freedom in the first place, using the "protections" of our legal system to continue forth, selling the "front page" headlines to the highest bidder.
"Did he just accuse the various news agencies of taking "liberty" to sell our safety in the name of freedom to whomever was willing to pay the most money?"
I sure the fuck did.
That's the beauty of the freedom of the press.
But with freedom comes responsibility.
Yep. A responsibility to tell the truth without putting at risk the very foundation in which gives us such freedoms in the first place.
Let the truth be told.
Posted by m.david at 07:25 AM | Comments (2) | TrackBack
Phhh... Not a da... Wait.. What?
Windows Genuine Advantage plug-in installation
Windows Genuine Advantage plug-in installationSome downloads are made available only after users have validated their versions of Microsoft Windows. Firefox and Netscape Navigator browser users may install a helper program, the Windows Genuine Advantage plug-in, to enhance their download experience.
Hold up... Am I reading this correctly? You mean I don't have to be running IE to validate my install of Windows anymore?
Ok, who are you and what'd you do with Microsoft?!
Hmmm... Well, even if you ARE Microsoft... It's not gonna last. I mean, come on, its not like you're suddenly going to wake up one day and find a Google, Microsoft and Sun join forces to set up R&D lab headline.
Hah! Like that'll ever happen. ;)
Posted by m.david at 10:08 PM | Comments (0) | TrackBack
Thanks to my own God, I was pretty productive yesterday to dispose most of them
By them I believe Atsushi Eno means bugs (I don't think he went all postal on us and... well, thats not a topic thats funny in any way so I'll avoid taking this any further. He means bugs.)
Great. Not only are the Japanese surpassing us (meaning the USA) in every technological field, but now they each have their very own God, apparently, to help debug their code.
How do you compete with that? We're done. Cooked. Its over.
How depressing :( I think I need a new hobby. ;)
Posted by m.david at 04:57 AM | Comments (0) | TrackBack
Is Microsoft Planning to Make Visual Studio Standard Edition Free?
So, why not offer a version of Visual Studio for free? Well, besides the fact that it would acknowledge that Eclipse is now a contender; there are all those customers that already bought a copy of VS 2005 (either directly or thru the MSDN Universal program). But, Microsoft has never required Studio to be activated (and I don’t think they will start any time soon), which means it has been very easy for someone to install a copy of Studio and not pay for the license. The upside of this is that Microsoft is getting more people to use the product, and (usually) folks that didn’t purchase a copy don’t go looking to Microsoft for support (which keeps down Microsoft’s cost for providing support).
I somehow missed this post from DonXML from a couple of weeks ago. Don has got an excellent point. The one area in which I would expand it would be...
Open up the source.
You want to find out just how good Visual Studio can get while at the same time kicking Eclipse to the curb? Let the Windows/.NET development community have at it. Imagine what would happen if you let somone like Jeff Key have his way at the heart of VS...
Only good things will happen and, like Don suggests, there are plenty of other areas where you can focus your resources and expect professional development shops to pay bigger dollars for the result. The profiler in the Team Edition is a good example. How much more finely tuned could this become or how many other things could you do if you did'nt have to focus a good portion of your limited resources on the core IDE and instead let that best-of-breed talent you have on campus open up their imaginations and let the good things flow.
We all know the money's in the platform anyway, so who cares about exposing the underlying tool source. The only risk you run is... hmmm... guess there wouldn't be any risk given the tools market is no longer really a market any more, now is it. ;)
Think about it. It makes a lot of sense when you do and could really change the momentum that, in all honesty... Eclipse currently owns.
[NOTE: In being a pretty heavy user of Eclipse myself I can tell you right now its a FANTASTIC tool. Well, as long as its the only thing running AND you don't let it sit idle in your toolbar for long enough for the Java VM garbage collector to have stripped away its resources forcing it to rebuild itself in memory[1]. If this happens then its slow as molasses. But thats the Java VM's fault, not the Eclipse tool itself as this is true about any and every Java application or tool I use on a regular basis (OxygenXML and jEdit.)
[UPDATE: BTW... Come up with a good "we spent time listening to our development community and ideas in which they felt could help make VS better than it already is and, based on their feedback, have decided to go this direction." and you'll have your PR folks springing cart wheels and offering you foot rubs and shoulder massages in the spare time they now have thats was being spent on trying to keep the MS image as clean as they possibly can. Furthermore, you would also be able to use just such a move to integrate portions of the Windows platform into this "program", even if it was only the .pdb's. Obviously its only a tiny portion of your overall customer base who give's a rats a$$ whether or not they have access to the source or not, so by opening up the IDE to the development community to hack at, retaining ownership of various necessary pieces by giving access to the pdb's so folks can point out the problems in the code, but not be given access to the code itself... again, foot rubs and shoulder massages. [Extended Note: In regards to the Windows platform, obviously there are pieces from a development perspective that would be helpful to have access to the pdb's for some sort of "Open PDB RAID" database program and other portions that would be exposing WAY TOO MUCH in regards to competitive secrets as well as from a security standpoint. Those pieces are easy to justify retaining complete ownership and any of the OSS advocates that don't understand this... well, I'll stop short of calling them names but from a PR perspective the small percentage of folks making these types of demands can easily be seen as extremists who expect everything for free and don't have a clue how an economy much less a business are run. So I'll leave it at.]
Keep saying that over and over...
foot rubs and shoulder massages.
foot rubs and shoulder massages.
foot rubs and shoulder massages.
See, it sounds a lot better than "You fuckers! How the hell are we supposed to maintain any sort of sanity if you keep [fill in the blank with whatever it is you're being accused of at any given time]!!!"
again > foot rubs and shoulder massages.
- or -
"You fuckers! How the hell are we supposed to maintain any sort of sanity if you keep [fill in the blank with whatever it is you're being accused of at any given time]!!!"
I know which one I'd choose, but then again I have nothing to lose. So I'll stop my jabbering and let you continue forward in your thinking ["foot rubs and shoulder massages." "foot rubs and shoulder massages." "foot rubs and shoulder massages."]
---
[1] : Assuming this is whats taking place, the logic in such things is beyond me. Just take a core dump[INSERT: For those purists who take core dump to mean what it used to mean (and technically speaking, really should probably still be this way) I added a link to Wikipedia's entry for a core dump which, after realizing I've never really verified that what I assumed was an OK way to term just a particular applications memory block instead of the entire system's memory block, decided "I'd better check and make sure that using core dump in in this example was an OK choice. It was.] of the memory, cache it on disk, and send it into sleep mode (similar to the way Virtual Server or VMWare will cache a snapshot of the current state of a VM instance... comes back to life A LOT faster than Eclipse does on the same machine (read: same hardware resources so its not a resource difference and instead a difference in philosophy.) Then again, maybe this is what they are doing, but it sure doesn't feel like it when you're sitting there waiting for the IDE to come back to life after its been sitting idol for a while.
Posted by m.david at 11:08 PM | Comments (0) | TrackBack
Google Reader API - Hire Me, Google
It looks like Google is about to reveal yet another API. Niall Kennedy has been able to figure out the back-end for the Google RSS Reader. Jason Shellen and Chris Wetherell have confirmed the existence of an API and Shellen mentioned that they built the API first and the reader second. At first glance it seems that the reader API will enable third party developers to build their own front-ends, similar to the Google Reader, using data from Google. Interestingly enough, the Reader API changes all feeds to Atom, regardless of their original format.
The last sentence in the above quote is obviously where the title came from. Extending from this, for anybody who has been spending any amount of time working with the Atom format they will tell you exactly the same thing I'm about to:
Atom is the future. And apparently from Googles perspective, the future is now.
[InnerThought Monologue: Hmmm. That is interesting. The thought of being forced to work with RSS 2.0 in ANY sort of development capacity makes me sick to my stomach. Google is focusing on Atom? I like the thought of working with Atom from a major development platform perspective. Huh... Suddenly, it seems like I need to be paying more attention to the Google dev world and less to Microsoft. That is of course unless Microsoft were to somehow find a way to set the data feed politics aside and go with a format whos design was led by folks who actually know what they're talking about instead of someone who thinks he does, but most definitely DOES NOT. Of course there are folks at MS who know what they're talking about as well. But I guess my politics point has only been re-emphasized. Of course, maybe Microsoft does plan to at very least provide direct support for Atom 1.0 in addition to RSS 2.0 inside of their Windows Live API and just hasn't taken the time NECESSARY to tell anyone about it.
I guess until they do, I need to starting REALLY LOOKING into GOOGLES API instead as if given a choice over RSS 2.0 and Atom?]
[...]
[OuterVoice: Hey, if anybody needs me, I'm going to be playing over in Googles sandbox, K. They've got more interesting toys to play with. ;)]
Posted by m.david at 06:58 PM | Comments (0) | TrackBack
[UPDATE: Reading through the readme.html I noticed this:
All CLS compliant .NET languages are supported.
So I guess you should scratch the C# and replace it with: EVERYTHING! :)]
[Original Post]
Jeff Rafter recently sent me an email to inform me of the above titled project a friend of his developed. This needs to get out on every wire I can possibly send it out on as this is WAY TOO COOL!!!!
The body of his email is as follows:
I thought you might find this one interesting: a friend of mine wrote a C#/.NET 2.0 wrapper for Berkley DB. It supports XPath 2.0 and XQuery... so I thought it might be of interest to you.
For those of you unaware (which I doubt is all that many, but you never know) Berkley DB is a well beloved open source DB which as of the last year or so provides direct support for XQuery. So, in essence, not only do you have open source .NET-accessible client-side XQuery support via Saxon.NET, but (even better!) you can now access a Berkley DB (from SleepyCat Software) which is (more than likely anyway) going to be quite a bit faster as well as the fact that its a full-fledged DB which Saxon.NET obviously is not. Don't get me wrong... Obviously as the developer of the Saxon.NET project I'm not trying to put it down in anyway, but knowing one's strengths and weaknesses is an important part of understanding when to use what tool and why. For accessing raw XML in a .NET-based application, Saxon.NET would be a good choice.
However, if your needs include an open source .NET-accessible client-side (or server side for that matter) DB with a proven track record of performance and reliability, then the above linked project is obviously something you should take interest in.
As an extended note, for non-open source XQuery-enabled .NET-accessible DB's your options would include SQL Server 2005, SQL Server Express, and DataDirect. If I'm missing any that you know about, please either let me know or simply leave a comment.
Thanks for the info Jeff!
[NOTE: Not sure if this project supports Mono (if it doesn't, given that its open source, it shouldn't be all that long before it does), but I will find out and update this post accordingly]
Posted by m.david at 01:21 AM | Comments (0) | TrackBack
[UPDATE: via a comment to Eve Maler's post (linked below) Paul Downey pointed at a Stephen Fry audio interview with J.K. Rowling. For those of you unaware (a number in which I count myself among) Stephen Fry is the voice behind the Harry Potter audio books. I have to admit that I'm not normally the type of person who is attracted to fantasy type novels such as what you find in Harry Potter. With that said I will admit that I have read several of the Harry Potter books and have found them absolutely fascinating! If I didn't already spend so much time reading tech titles (for recreational reading ome of Tom Robbins highly recommended titles > [my Amazon Associates link to Tom Robbins titles] is always nearby :) I find it suprising myself admitting to the fact that I would probably be reading a Harry Potter title [my Amazon Associates link to Harry Potter titles
]. Not surprising, after listening to the first fifteen(15) minutes of the above linked interview I can now see why... J.K. Rowling is somebody in whom I can relate with as apparently, she's a real person just like you and me. Please don't take this to mean that I think other authors are not "real" (real in the sense of down-to-earth type folks.) I've just never listened to them speak in an interview type setting nor do I know how they would respond to Stephen Fry's conversational-styled interview questions (which is very engaging in and of itself!) I can tell you that if there answers are anything like J.K. Rowling, I could quite easily make the same statement about them too. Fascinating stuff!]
[Original Post]
Understanding XML: Harry Potter and the Legion of Code
She quoted J.K. Rowling's comments from a FAQ about how the members of the Order of the Phoenix (OoP - think about it) communicated with one another
In the above quote 'She' refers to Eve Maler and 'quoted' a recent piece she wrote comparing secured End-to-End messaging and various elements of the intricate details of Harry Potter and his magical world. A fantastic piece, but with Eve thats kind of expected (oh the pressure! ;) given the fact that she's, well, Eve (or Hermione depending on whether your confident you can call her this AND expect in some capacity to get away with it (that's a joke, BTW ;).) Kurt followed-up (linked above) her piece with what of course is another fantastic piece of his own. But, like Eve, with Kurt we can expect no less. NOTE: Did anybody else just come to the sudden realization that I either need to learn how to write, or find new friends if I expect to maintain any sort of level of self confidence? ;) I wouldn't worry though. Whether it's justified or not, I have plenty of self confidence to draw from, so I should make it through this episode OK, don't you worry about me.
You were worried, right? Right?! Heellllloooooo...
Well, while you collect you're thoughts (or excuses as the case may be ;) I'll get to the point.
(You're welcome. :)
Given my quite open love/hate relationship with OOP, or Object Oriented Programming (love/hate as in I Love to Hate OOP), do you realize what has just happened? Not only do I have to try and take on every OOPs generationed (or factory generated as the case may be ;) hacker and their various cult followings/factions, but now I have to take on Harry Potter?! As if my job of trying to save the world from the evil's of OOP wasn't hard enough (don't drink the Object-Oriented KoolAid! Kool-Aids not an 'Object' (how do you objectify Kool-Aid?), it's poison!!! (at least OO-KoolAid (said in my best Homer Simpson 'mmmm... Forbidden Doughnut' voice) is anyway ;) now I have to take on Harry Potter and every man, woman, and child who has been entranced by the magical spells of J.K. Rowling!!!
Thanks a lot J.K.! (if not obvious J.K. and I are tight -- but don't ask her that if you happen to know her, K, Cuz' more than likely she'll pretend she has no clue who you're talking about. She does that a lot, I've noticed. Quite the imagination that J.K. Always coming up with fun ways to 'pretend' she doesn't know me. ;)
Don't worry OOPs generation, Harry Potter or no Harry Potter, I'll save you!
(Yo, (if not obvious,)
(I could really use some help here.)
(anybody?)
(Anybody?!)
(Heellllloooooooo.....)
(Damn!))
Posted by m.david at 08:28 PM | Comments (0) | TrackBack
Understanding XML: All I want for Christmas ...
I now work at a company that at one stage made its availability as an outsourcing partner a big point in its marketing plan, but personally, I still don't buy it. There are any number of perfectly good reasons to outsource a certain portion of your development process - you can't get the help you need locally, the outsourcing partners are specialists in a domain that your company doesn't deal with on a regular basis, you're needing help with localization, you're interested in expanding in new markets and need people who are skilled in those markets. All of these are legitimate. What's not, frankly is when you decide that you can use out-sourcing to get around local labor laws and take advantage of a strong differential in the costs of that labor. Santa, I'd like to see each CEO that's decided that they can outsource their labor costs wake up one day to discover that their outsourcing company has just purchased their company with the money that has been given to them and that the CEO's position has been, well, outsourced.
Posted by m.david at 02:11 PM | Comments (0) | TrackBack
Taking a Long View: The Opposite of Christmas
[UPDATE: I guess the blogosphere is smaller than I realized. Please see Rob Bray's follow-up comments below. As I mentioned in my follow-up comments to Rob, theres obviously no one more qualified to answer this question than the one who's post spawned this post in the first place. Rob is someone who obviously knows a thing or two about these systems given that he works within them. So as I mentioned, again, in my follow-up to Rob, I think we can safely state the case is officially closed. And it looks like I need to do some homework. I did'nt realize we were executing our mentally ill in the U.S. from time to time. Obviously not the kind of "quality" you can take much pride in, now is it.
Thanks again Rob. You're obviously a great example for the rest of us to learn from and follow.]
Most of our court system and our jail system and our social services systems are clogged with mentally ill people. With Peters. We are forced to throw him there, because we cannot care for him, and no one else will. Jail is often the welfare system of last resort.
If I'm not mistaken, Rob, the author of the above linked and quoted blog posting, is Tim Bray's brother (it was through a recent Tim Bray post that I discovered the link to this post.) I can tell you right now (not that I would need to for those keenly aware of Tim and all that he has given of himself to this world) that if Rob is anything like Tim, he's an incredibly talented, loving, and giving individual who care's more about the well being of others than he does of his own. By reading this article I think we can safely state "yeah, he's just like his brother."
But as caring and wonderful of an individual he obviously is, I can't help but read this post, especially the above quoted piece, and question "what's so wonderful about that?" I ask this not as a direct question to Rob. I doubt much Rob would would ever stumble across this post in the first place. Instead I ask it to any residents of Canada who might read this (Kurt?): If this is an accurate portrayal (and I have no reason to believe that its not) of the Canadian socialistic way of handling the mentally ill, what's so wonderful about that?
I don't mean this as a bash Canada kind of question; From what I understand, Canada is a pretty cool place. When I was a kid growing up in Seattle (more properly, Kirkland, Juanita High School, Class of 1990 to be quite specific) we used to go and watch my brother, who at the time was pitching for the Vancouver Canadians, who (again, at that particular time... not sure who they are an affiliate for now but from what I learned recently from a different Tim Bray post, there now a Single A club) were the Triple A affiliate of the Chicago White Sox. I loved it! It was a wonderful experience that I would look forward to each and every time.
Even further...
...as both a kid and an adult I would/will visit Whistler/Blackcomb as often as I can. Again, I love it! But I can't help but wonder that as fantastic of a country as Canada undoubtedly is, it definitely seems to have its share of problems, and in this case the problem seems to be a lot worse than what we have here in the states under a capitalistic government. It would seem to me that a government built on socialistic tendencies would create a better system for the mentally ill than simply using the judicial system. But I'm also guessing its a lot more complicated than I'm making it out to be.
I don't mean to come across the wrong way. I'm really just posing a question, not making any sort of accusations. Anybody care to comment?
Posted by m.david at 12:53 PM | Comments (2) | TrackBack

For the price of watching a 30 second advertisement you can access the entire body of this years Time Magazine's Persons of the Year award given to Bono (Amen!) and Bill (Amen!) and Melinda (Amen!) Gates (a second Amen! to all three!) which starts off with:
These are not the people you expect to come to the rescue. Rock stars are designed to be shiny, shallow creatures, furloughed from reality for all time. Billionaires are even more removed, nestled atop fantastic wealth where they never again have to place their own calls or defrost dinner or fly commercial. So Bono spends several thousand dollars at a restaurant for a nice Pinot Noir, and Bill Gates, the great predator of the Internet age, has a trampoline room in his $100 million house. It makes you think that if these guys can decide to make it their mission to save the world, partner with people they would never otherwise meet, care about causes that are not sexy or dignified in the ways that celebrities normally require, then no one really has a good excuse anymore for just staying on the sidelines and watching.
Hey Google: Instead of a corporate charter that states "Do No Evil" how about one that states "Do a whole bunch of good." I, for one, would definitely pay more attention to you if you did.
Disclaimer: I believe that the open source movement has done a lot of good things and will continue to do a lot of good things. That's why I'm a part of it. But having spent a good deal of time working as a contractor on Microsoft campus it really drives me nutts when I hear stupid a$$ "MS is Evil" comments. It drives me even more nutts when you read articles such as the one linked above and realize how much good is being brought into the world because of that so called "Evil Profit." Evil Profit? Tell that to the millions of people who now have a hope at a decent life because of that so called "Evil Profit."
The next time you're tempted to make such a statement... Think. If you do, you won't look like such a damn fool for suggesting something so completely absurd.
Posted by m.david at 10:12 PM | Comments (10) | TrackBack
said in my very best Julia Roberts/Pretty Woman impressioned voice.
CD sales fall as downloads rise, fueled by broadband
"I think CD sales are going to continue to decline," says Owen Sloane, a Los Angeles music attorney who specializes in music and intellectual property.
I sometimes wonder if people really appreciate how their words are quoted by the press. I've had my own experience with such things and have been left with a pretty awful taste in my mouth in regards to the reporting press because of it. As an L.A.-based attorney specializing in music and intellectual property obviously Owen Sloane is not an idiot. So my best guess suggests that what he more than likely said was something to the tune of "We've seen a continued increase in online sales via downloading and streaming music sites. Because of this increase obviously 'I think CD sales are going to continue to decline'" or something similar. And he would definitely be right.
The rest of the above linked article is actually pretty good. It points out that...
...the record industry is apparently crying the 'CD sales decline blues' again because of an apparent 7% decline in sales over the past year. What I don't buy is that every person in the music industry is a complete idiot and doesn't bring recognition to the fact that we're right smack dab in the middle of a media/medium shift in regards to the delivery mechanism for music. When you couple this with the increase in both legal and illegal downloads the distribution numbers are obviously going to be skewed. But overall things are OK, and as the increase of legal online music sites (up by 180 over last years 50 apparently) continues to provide increasingly better and better services that make both cost, availability, and accessibilty attractive to this same base of consumers, they're only going to get better.
Some might think I'm giving the music industry far too much credit in regards to what they actually believe. But I don't think so. To make it in the music industry requires skill, talent, and from the business side of things especially, smarts. They'll get this thing figured out. In the mean time my advice would be believe about half of what you read in the press. Based on my own above linked experience, that number would be about right.
Posted by m.david at 07:26 PM | Comments (0) | TrackBack
In search of a terrorist nuclear bomb, the federal government since 9/11 has run a far-reaching, top secret program to monitor radiation levels at over a hundred Muslim sites in the Washington, D.C., area, including mosques, homes, businesses, and warehouses, plus similar sites in at least five other cities, U.S. News has learned. In numerous cases, the monitoring required investigators to go on to the property under surveillance, although no search warrants or court orders were ever obtained, according to those with knowledge of the program. Some participants were threatened with loss of their jobs when they questioned the legality of the operation, according to these accounts. Federal officials familiar with the program maintain that warrants are unneeded for the kind of radiation sampling the operation entails, but some legal scholars disagree.
Here's an idea... Why don't we just park a couple of 747's on the runway, leave the engines running and the keys in the ignition, and put a BIG PHAT SIGN on them that states:
Terrorists:Just in case you need a bit more time in the air to decide which targets you want to hit, we've topped off the tanks for you.
Oh, and we got ya' those nice fuzzy wool seat cover's... you know, the ones you said you really like that one time.
Your welcome, it's no problem. They were on sale anyway, and we were really just doing our job to protect your a$$'es from being uncomfortable. That would be inhumane!
and guess what?! We got you a bag of Hershey Kisses... there under the front seat, you know, in case you're craving something sweet while your plotting out whether it makes more sense to go for a Nuclear plant, the Hoover Dam, or a side swipe of the general downtown San Francisco area... Smooch, Smooch, Smooch. ;)
Oh, do you need a pillow?
America... WAKE THE FUCK UP! Just who is it that we're protecting? Cuz' its OBVIOUSLY not ourselves!
Posted by m.david at 12:38 AM | Comments (0) | TrackBack
I'm not finding a copy of this announcement on the site, so for now I'll simply copy and the paste the intro into the SOURCEFORGE.NET UPDATE - 2005-12-22 EDITION that I recently found in my inbox.
Dear SourceForge.net User,As we enter a new calendar year, our focus remains on further
improving the quality of our service. To that end, I am pleased to
announce that SourceForge.net will offer Subversion in early January
2006, initially as a beta program available to approximately 50
projects. Then, if the Subversion beta period proceeds as smoothly as
we expect, we will deploy Subversion site wide by March, 2006.Going forward we intend to support both CVS and Subversion, thereby
offering the two version control systems most widely used in the Open
Source community.In addition to our Service Operations Team's progress regarding our
Subversion offering, I am also pleased to report that our Enhancement
Team and Product Management continue to make significant progress on our
upcoming redesigns of search and the software map. I'll provide details
next month.
Thank you once again for your continued support. The SourceForge.net
team wishes each of you a healthy and happy 2006.Jay Seirmarco
General Manager, SourceForge.net
jay@sf.net
Posted by m.david at 02:41 PM | Comments (0) | TrackBack
If only there were a way to send one width to IE5.x/Windows, and another width to modern browsers which supported the CSS box model... is a rough approximation of what Jeffrey said (emailed) to me at the time.
A lot of people have clout in the Web Standards world. However, few have as much as Tantek Çelik. For those unaware Tantek is the man behind, among other things, the development of the standards-compliant Microsoft Internet Explorer (before any of y'all start reaching for the page down key to access the comment box, keep reading ;) -- for Macintosh (there, you feel better now? Good. Making you feel better is what I'm here for. Just doing my job :)
So to restate, Tantek was the guy (he's with Technorati now) behind the development of Microsoft's IE for Mac product, which, as I'm sure most of you know by now has been recently sent to the MS support chopping block just in time for Christmas Dinner at Bill's place. Suprisingly, my invitation is yet to arrive in the mail... I'm sure thats just a technical 'glitch' however. I'm sure it'll arrive any day now. In fact, as soon as I'm done writing this I'm going to go wait by the mailbox. You know, just in case the mailman is holding back on me. I say this because I have suspected for quite some time now that he's the one behind the 'yet to arrive' invitation from the W3C XQuery Working Group to 'come on board' as an invited expert. I mean come on... its OBVIOUS that they've sent the invitation so what other possibilities could there be? Thats right... The mailman. I've long suspected him for a whole slough of 'missed deliveries'. For example there was the "no puppy for Christmas '76" incident that has yet to be solved... My guess? Thats right, the mailman never delivered that damn letter to Santa! That bastard. Do you know whats its like to be four years old and NOT have a puppy?! It DESTROYED ME!!! ;)
If not obvious, I pretty much blame the mailman for everything these days. No invitation to Bill's for Christmas. No XQuery WG invite. My little sister. You know, that kind of stuff. ;)
Phew.. OK, now that I have that off my conscience... back to Tantek's post. :D
So here's the deal... I have long struggled with the 'ideals' that many developers hold on to that demands that only one source code base sould be sufficient to properly display, as expected, in each and every browser ever produced that still holds any significant market share whatsoever. Why is that? (the developers ideals, not my struggles with these ideals.) Why can't it be OK to have to do a little server-side work to send one set of code to one browser and another set to another. Do you realize how much time, heartache, headaches, anxiety, and general sanity is saved when you allow yourself to let go of the ideals that EVERY browser must render the same source code the same way or its no good at all?
TONS. and TONS. and TONS.
Now, don't me wrong. This is not to suggest that we shouldn't continue to push for the browser manufacturers to work together to provide a standards-compliant browser that we can all count on to display the HTML/XHTML/CSS we send it, as long as that HTML/XHTML/CSS is standards-compliant itself, to render close to, if not exactly the same.
But we don't live in that world right now. In fact, we NEVER HAVE! So why continue to frustrate yourself with trying to hack 'the perfect markup base' together? I promise, even with the fantastic efforts of people such as Dean Edwards who have helped make our development lives quite a bit more sane than they were, with the existing base of browsers it's a pipe dream that will NEVER come to fruition. Of course, I guess if all you use is HTML 3.01, then yeah, that pipe dream CAN come true. But if this happens to be your pipe dream, then its not really a pipe dream in the real world, just in your head. In fact, if this 'dream' sounds even remotely close to something you hold near and dear to your heart...
Seek help.
Please.
Thanks :)
---
For the rest of you who are not currently pre-occupied with a therapy session, lets play with some code shall we. :)
Before we get started, I should preface this with the fact that one of the common arguments I hear against using server-side code to determine what browser is making the request is that you can't always count on the browser sending the correct User-Agent string. While I personally consider this 'excuse' the lamest possible reason why you shouldn't use server-side logic to determine what browser is making the request, I will give into the fact that this statement, in fact, is true. For like .0000001% of the requests, but none-the-less, true.[1]
But guess what... over the course of the last twelve(12) months we've gone from a world where client-side XSLT (1.0) wasn't considered a viable cross-platform, cross-browser solution, to a world where it can easily be used in conjunction with various other technologies as the very foundation in which ALL web pages are built. This isn't just me, Mr. "MDP+XSLT4EVER" trying to promote XSLT on the client because I personally think it's a fantastic programming language. In fact, while I do feel this way, I'm not even going to go as far as suggesting that it become the foundation of your Web 2.0 weblication development, although it would definitely be a good foundation to build upon.
Instead, I'm simply going to suggest that with a combination of using the User-Agent string, coupled with sending a simple XML "configuration" file the first time a browser makes a requests to any particular website you can quickly and easily determine whether the browser is being spoofed, and, if it is, send a vanilla webpage with the message "I'm on to ya!" in Bright Red 60pt Verdana (or something of your own choosing if this isn't something that'll work for your situation. ;)
Now, for the 99.9999999999% of the requests that will be determined the client is making no attempt to claim its something thats its not you can now reliably assume that you either have in your hands the correct browser information, or someone is going to the extent of spoofing just the version of the browser, but not the browser itself. If this happens to be the case, then please tell me you can live with ridiculously small percentage of folks who are going to this extent of pretending to be a browser version their not, writing them off as nothing to be concerned over. If you can't, starting with this paragraph as "1" please count back eight(8) paragraphs and consider this same advice for yourself. NOTE: That would be nine(9) paragraphs for all you smart a$$'s who suggest "---" counts as a paragraph... for those of you now questioning if "---" or a one(1) to two(2) word sentence really counts as a paragraph, or even further if a one or two word 'sentence' technically even qualifies as a sentence... bite me. ;)
For those of you still with me, thanks for not being a complete phreak :) Let's continue, shall we... :)
Now there's a couple caveats I need to make known: This currently doesn't work in Opera 9.0 preview... as outlined in footnote [1], the document() function currently blows up the browser... but again, as outlined below, my guess (and hope!) is that this will change with the final release.
Also, to keep the various processing tasks separate(e.g. configuration separate from output), normally I would create a separate stylesheet for the actual processing of the HTML output (e.g. page:output) and import this stylesheet using the xsl:import instruction element. But Transformiix has, um, how should I say... issues with imported stylesheets and namespaces which are not part of the base XML document being processed. Don't know, don't care, so don't ask. (read: I gave up trying to make sense of why Transformiix does half the things it does (or doesn't do, as the case may be) and instead try not to push it in places that, while nice (like keeping processing tasks such as configuration and output processing seperate), are not mandatory in regards to functionality.)
All right. One last thing: this sample is written using an ASP.NET server-side sample. I've borrowed from the code base of my client-side XML O'Reilly title a tiny bit. Not too much... I don't think O'Reilly would appreciate such things as me "pre-releasing" any of the actual code or content from the title. So I've watered things down and changed things such that I don't devalue the title in any way, while at the same time giving you all something to both think about and play with over the holidays.
This will also be a good teaser of sorts as to the content of the title. One thing you can be absolutely certain about... if you like code, theres LOTS and LOTS of code to play with in this title. If not obvious, I kind of like writing... code and text alike. But if you think I write a lot of text... Oh my... just wait till you see how much more I like to write code. Believe it or not, writing blog entries is a hobby, not a profession... Code is Life, at least my life anyway :D
OK, so with all of this stated, lets FINALLY look at some code.
First, the server-side (ASP.NET) code:
<%@ Page Trace="false" Language="C#" Debug="false"%>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.XPath" %>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
String browser = Request.Browser["Browser"];
String UserAgentInvalidDoc = "./UserAgentInvalidDoc.xml";
String PItext = "type=\"text/xsl\" href=\"SessionConfig.xsl\"";
String compareBrowserStringDoc = "./compareBrowserString.xml";
XmlDocument xDoc = new XmlDocument();
xDoc.Load(Server.MapPath(compareBrowserStringDoc));
XPathNavigator xNav = xDoc.CreateNavigator();
Response.ContentType = "text/xml";
XmlTextWriter x = new XmlTextWriter(Response.Output);
x.Formatting = Formatting.Indented;
x.Indentation = 2;
x.WriteStartDocument();
x.WriteProcessingInstruction("xml-stylesheet", PItext);
x.WriteStartElement("my","session","http://channelxml.com/explorations/session");
x.WriteStartElement("my", "validation", "http://channelxml.com/explorations/session");
x.WriteStartElement("my", "UserAgentInvalidDoc", "http://channelxml.com/explorations/session");
x.WriteValue(UserAgentInvalidDoc);
x.WriteEndElement();
x.WriteStartElement("my", "browser", "http://channelxml.com/explorations/session");
x.WriteValue(browser);
x.WriteEndElement();
x.WriteNode(xNav, false);
x.WriteEndElement();
x.WriteEndElement();
x.Close();
}
</script>
Without spending time explaining how the above code works (its shouldn't be too hard to figure out, but if you're unfamiliar with ASP.NET or new to coding in general, I would HIGHLY recommend you pick up a copy of O'Reilly's ASP.NET In a Nutshell title. I use my copy often. A fantastic reference worth every penny (and I purchased my copy long before I gained any "free book" benefits from O'Reilly so I am stating this having spent cold hard cash to add it to my bookshelf.)
It should be fairly obvious that what the ASP.NET code does upon each request is build out an XML file with the browser the requesting client claims to be, a default fallback file that can be transformed when its determined by the client-side XSLT that the browser its claiming to be and the browser it actually is are not the same, and then embedded XML data that is used as a way of comparing the 'claimed' browser string to a list of known browser strings that would normally match the XSLT vendor system-property. A significant point worth mentioning comes in the answer to the question "Why do we need to combine the static XML file and the dynamic data in the first place? Can't we simply return the dynamic data and access the static file from the client using the document() function?" and the answer is quite simply yes, we can. But the server cost of combining these XML files into one XML file is minimal, where as the cost in performance in regards to the initial load time of the the application is quite signficant.
Why's that? Making that second request requires, well a second request. While this request does add a tiny bit of HTTP header overhead, its not exactly something we need to be overly concerned with. But the additional time it takes to make the additional request back to the server and have this same information returned in a separate XML data file? This has the potential to be fairly significant as when you add together the additional time it takes gain access to the requested file, as well as the additional time for the XML parser to parse the returned XML and make it available to the XSLT processor to continue forward... This all adds up to a human noticeable time lag. While time lag in making new requests once an application is loaded is expected, the initial load time of any given application has a significant weight on the perceived value, capability, and performance of any given application. This kind of thing REALLY matters. Finding ways to minimize the initial load time of any application is always the best philosophy. With that said you also don't want to burden your server with extensive processing as this obviously has an effect on the perceived performance as well given the fact that to the end user, time is time no matter if its the client or the server thats taking the time to do the processing. Obviously a balance needs to be struck. But such a balance is well beyond the scope of this post. Maybe for another post, but most definitely something you'll find as part of my O'Reilly title (insert cheezy "I'm so ashamed to be self-promoting" caption here... wait, I'm not ashamed to self promote... nevermind, just buy my Client-side XML title when it releases, K. ;)
Moving back to the actual XML file produced by the above ASP.NET script... you might be asking "why do I care what browser the client is claiming to be? Can't I just use the value returned by system-property(xsl:vendor) to determine what browser it is and be done with it?" and the answer would be, "yes, you can." But having this information is actually fairly important as, for example, Mozilla-based browsers such as Firefox and Netscape (well, at least partially in the 8.0 release anyway) all report back as using the Transformiix processor. For transformation of XML using Transformiix this information is not all that important as there's no difference at this stage between what version of Transformiix each browser is using. This might change in the future, but thats not what we're concerned with at the moment. What we're concerned with is the version of the underlying Mozilla processing engine as well as various other assumptions that can be made when we have the combination of browser and vendor at our disposal.
So then where is the browser version info? Good question. Given this code is influenced by code developed for the O'Reilly title, as well as the fact that this is really designed to merely showcase that this can be done, and done quite easily without tripling the code base for you to absorb. SO MUCH MORE is possible when you start using all of the tools you have at your disposal together, which is another purpose for this post... to showcase the fact that theres a whole new world of possibilities out there when you factor client-side XSLT into the mix, and all it takes is a bit of knowledge and a whole lot of imagination and... well, I'll leave the 'and' to your imagination. :)
Continuing forward, whether familiar with ASP.NET or not, looking at a sampling of the output of any given code-base is usually pretty helpful in quickly gaining an understanding of how things work, or at very least what can be expected when making a processing request such that you can take this data and do something else with it (which is really the whole point of making the request in the first place.)
With this in mind, the following is what would be returned by the above code when a request is made by Firefox:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="SessionConfig.xsl"?>
<my:session xmlns:my="http://channelxml.com/explorations/session">
<my:validation>
<my:UserAgentInvalidDoc>./UserAgentInvalidDoc.xml</my:UserAgentInvalidDoc>
<my:browser>Firefox</my:browser>
<bVend:bVendors xmlns:bVend="http://channelxml.com/explorations/browservendors">
<bVend:vBrowser name="IE">
<bVend:vendor sourceXML="validIE.xml">Microsoft</bVend:vendor>
</bVend:vBrowser>
<bVend:vBrowser name="Firefox">
<bVend:vendor sourceXML="validFirefox.xml">Transformiix</bVend:vendor>
</bVend:vBrowser>
<bVend:vBrowser name="Mozilla">
<bVend:vendor sourceXML="validMozilla.xml">Transformiix</bVend:vendor>
</bVend:vBrowser>
<bVend:vBrowser name="Netscape">
<bVend:vendor sourceXML="validNetscape.xml">Transformiix</bVend:vendor>
</bVend:vBrowser>
<bVend:vBrowser name="AppleMAC-Safari">
<bVend:vendor sourceXML="validSafari.xml">libxslt</bVend:vendor>
</bVend:vBrowser>
<bVend:vBrowser name="Opera">
<bVend:vendor sourceXML="validOpera.xml">Opera</bVend:vendor>
</bVend:vBrowser>
</bVend:bVendors>
</my:validation>
</my:session>
Without spending too much time on the details, a couple of things need to be understood in regards to the above XML output.
First off, as mentioned above, the output is the result of a static XML file that has been intergrated with dynamic data specific to the request being made. This static XML file contains the information necessary for the client to determine if the browser is potentially being spoofed by comparing the value returned by the XSLT 1.0 function(parameter) combination of:
system-property('xsl:vendor')
Also, to gain access to the actual real world name of the requesting browser in ASP.NET (instead of using the User-Agent string and your typical indexOf(char) function to loop through potential values found in the UserAgent string or RegEx object/function to determine the same thing (e.g. MSIE for Internet Explorer) you would use:
Request.Browser["Browser"]
or, more specifically, if this is something you plan to use often within a particular server-side script, set the value of a string to the value of this property:
String browser = Request.Browser["Browser"];
With this combined data we can now quickly look at the XSLT the browser is being asked to use as the basis for transforming the above XML:
This XSLT file, by the way, is really two separate files merged to accomodate for the Transformiix issues with imported stylesheets. Combined, the two files look like this:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="http://channelxml.com/explorations/session" xmlns="http://www.w3.org/1999/xhtml"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:bVend="http://channelxml.com/explorations/browservendors"
xmlns:page="http://channelxml.com/page/output" exclude-result-prefixes="my html page">
<xsl:output doctype-system="/resources/dtd/xhtml1-strict.dtd" doctype-public="-//W3C//DTD XHTML
1.0 Strict//EN" cdata-section-elements="script" indent="yes" method="xml"/>
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="my:session">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="my:validation">
<xsl:variable name="browser" select="my:browser"/>
<xsl:apply-templates select="bVend:bVendors/bVend:vBrowser[@name = $browser]">
<xsl:with-param name="invalidDoc" select="document(my:UserAgentInvalidDoc)"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="bVend:vBrowser">
<xsl:param name="invalidDoc"/>
<xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
<xsl:choose>
<xsl:when test="bVend:vendor = $vendor">
<xsl:apply-templates select="document(bVend:vendor/@sourceXML)"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="document($invalidDoc)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="page:output">
<xsl:apply-templates select="page:html"/>
</xsl:template>
<xsl:template match="page:html">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="page:head">
<head>
<xsl:apply-templates/>
</head>
</xsl:template>
<xsl:template match="page:title">
<title>
<xsl:apply-templates/>
</title>
</xsl:template>
<xsl:template match="page:body">
<body>
<xsl:apply-templates/>
</body>
</xsl:template>
<xsl:template match="page:heading">
<h1 style="font-size:{@size}">
<xsl:apply-templates/>
</h1>
</xsl:template>
</xsl:stylesheet>
This post is already too long so I'm going to leave you to figure out how the above XSLT works. To those who already understand XSLT, its obviously not difficult to figure out. To those who are new to XSLT if you have any specific questions, leave them as a comment and I will do my best to answer them as time allows.
But don't worry, I'm not going to leave you hanging in regards to what is finally output to the browser. The one piece of missing XML data that is obviously pretty important in understanding what's taking place is the XML specific to each browser/XSLT processor combination. Given the Firefox example above, lets look at the Firefox specific XML file. If you look at the XML file we initially sent to the browser in the above example you'll notice that a browser/vendor combination of Firefox/Transformiix tells our XSLT processor to request the "validFirefox.xml" from the server. That files looks like:
<?xml version="1.0" encoding="utf-8" ?>
<page:output xmlns:page="http://channelxml.com/page/output">
<page:html>
<page:head>
<page:title>Hooray, Your a Valid Mozilla-based Browser (Firefox, to be more specific)! Here's a Cookie</page:title>
</page:head>
<page:body>
<page:heading size="large">Hooray, Your a Valid Mozilla-based Browser (Firefox, to be more specific)! Here's a Cookie.</page:heading>
</page:body>
</page:html>
</page:output>
To showcase what this looks like when rendered, instead of providing a screen shot, I'm instead going to provide you a URL to test this out for yourself. In quick dislaimer, I've tested this code to work correctly on Internet Explorer 6.0 and Firefox 1.5 on top of a WinXP Pro box, and on Safari and Firefox 1.5 on a Mac/OSX Tiger box. As mentioned, the document function blows up Opera 9.0 preview, so considered yourself warned... again. What I don't know for sure is whether this code renders on Firefox running on a Linux-box. I assume it does given the fact that it runs just fine on OSX/Firefox, but if you discover this not to be the case, then please let me know and I will log into my Linux-box and figure out whats up.
With that stated, you can access the live demo here. To help understand whats going on, try it on various browsers if you have any combination of Fx, IE, or Safari installed on your particular machine.
Obviously pretty simple. But what should also be obvious is how much more you could be doing with this file. For example, referencing platform specific Javascript instead of banging your head against the wall trying build a cross-browser/platform Javascript solution. The same thing goes when speaking in terms of platform specific CSS files. Which, in fact, brings us right back to the original point of this post in the first place. To summarize, let's come up with a nice little catch phrase that we can all use in moving forward with our client-side browser-based application development. Just a suggestion, but how about something like:
If Tantek says its OK, then its OK.
I realize that if a phrase such as this were to be adopted, it puts a lot of potential power into Tantek's hands. But I think its pretty safe to state that if such a power is going to be given to anybody, then we're in pretty good hands with Tantek.
Wait, I like the sound of that... Instead of the above, how about:
We're in good hands with Tantek
I like it... has a good sound, look, and feel to it. Plus, its true... Not that I'm really suggesting this as some sort of Mantra we all virtually chant every morning over IM, but paying attention to the things Tantek has to say, in and of itself, is a pretty good idea. So maybe we can just leave it at that.
And to reiterate his comments that spawned this post in the first place:
If only there were a way to send one width to IE5.x/Windows, and another width to modern browsers which supported the CSS box model... is a rough approximation of what Jeffrey said (emailed) to me at the time.
Hey, there is!
Cool :)
---
Before I close out this post, there is something else I do want to point out... Whats interesting about using this "Anti-Spoofing" method is not so much the fact that the underlying accomplishment... theres nothing new I've presented that makes your development life all that much easier or better by sending the browser string back to the client for comparison against the returned value of system-property('xsl:vendor') and instead the fact that we've put the responsibility of processing the data into the hands of the client browser. In this case we're forcing the client to use its own resources to determine its own honesty. But again, even this doesn't suggest that any great battle has been won. But if the end goal is to push as much of the data processing to the client, and by doing so freeing up server resources that can now be spent on serving up a greater numbers of requests for data (which is an obvious side effect of pushing the data processing to the client... less data processing, more requests for data) our total performance gains become more than just the value of the saved server resources as the amount of resources necessary to serve simple requests for data, even in increased capacity, is several magnitudes less than what it costs to process that same data on the server, sending the result to the client for rendering. We also gain a reduction in bandwidth necessary to transfer raw data that can then be rendered by a stylesheet preloaded into memory which can in many ways be compared to the benefits gained in compressing HTML and images on the server and decompressing them on the client. While this is not what is technically taking place, it's an easy way to view the comparison to what is ultimatelly the same result... reduced bandwidth means more requests can be served over the same wire without increase in bandwidth costs at a relatively small cost in "decompressing" that data once it arrives at the client. In many ways this is really more of an excercise in training our minds to be be constantly thinking of cheap ways to reduce bandwidth (both server-side processing and over-the-wire) in which the cost increase to the client is minimal, and no where near the total cost of not using these methods.
But thats not the only gained benefit.
An equally important point to realize is that we are also retraining our minds to think in terms of classic client-server architectures. By forcing ourselves to push as much of the data processing to the client and returning our mindesets to classic client-server architecture we've actually accomplished something quite a bit more than this. Similar to the concepts of Grid Computing, classic client-server architectures are extremely efficient due to the fact that they spread the overall computing cost across a greater "surface area". Using an often referenced cliche catch phrase "the combined total is greater than the sum of all its parts."
So have we suddenly just created our first Grid Computing application without realizing it? Well, close... but not exactly. There are plenty of elements of Grid Computing that have not been captured using this method. But what we have done is captured the "spirit" of Grid Computing, which if not already obvious, has it's roots in classic client-server application architecture. The fact that by using the above method we've turned the "tables of proof" back onto the client helps drive home the point that as we continue forward in the realm of web-based application development, we continue to bring ourselves closer and closer to the time tested and proven client-server architectures of years gone by, while at the same time building upon the ideals that make Grid Computing such an appealing end goal in the first place.
The more things change, the more they stay the same. Isn't that how the phrase is termed? :)
I'm pretty sure it is. ;)
Enjoy your Browser-based XML processing with Client-side XSLT and browser specific CSS and Javascript enhanced day!
---
[1] Until recently, Opera would send a User Agent string claiming it was Internet Explorer as to avoid being sent a 'stupified' code base, forcing it into a position of not being able to provide its user base with the same functionality that the IE user base had.
I have to admit that at the time they were doing this (this is no longer the case, by the way) I had a hard time with the complaints that would follow that they were now having to deal with a 'sloppy' IE-only non standards-compliant code-base. My own feelings were that if you claim to be something you're not, you can't then come back and complain that you are being served the very code you 'requested' in the first place. Either complain you're being served stupified code, but continue to serve up the correct user-agent string, or spoof the user-agent, and then build a browser that handles the non-compliant code you're being served. It's a little much to expect everyone to adapt to you instead of the reverse of adapting to everyone else. I'd use the phrase " you can't have your cake and eat it too" but I hate that saying, so I won't.
Besides, I don't have to anymore. Opera decided to take control of things and, to be honest, they're now my favorite browser. Why? Well, its always been the fastest browser... that's a 'no contest' type deal. With client-side XSLT (although there are some holes currently e.g. the document() function will blow up the browser, don't even try... and among others the functions name() and local-name() don't return anything, nor do they throw an error... my assumption is that these will be fixed given the fact that they are not optional in the XSLT 1.0 spec... however, if for whatever reason Opera decides not to provide support for these functions, and yet jump on top of their 'standards! standards! standards! bandwagon... I take all of this and what I am about to suggest back. Something tells me I won't have to do that though... I hope anyway ;) support in version 9.0 one of the last hold-ups I had with promoting Opera as the 'King of all browsers' was quashed and as such I feel fairly confident in stating that Opera is now the King of all browsers. At least they will be with the final 9.0 release.
With that said, I will admit that I really wish they would directly support XForms first before WebForms 2.0. But I'm also not going to let this get in the way (mentally anyway) of promoting it as the 'King' as I am now of the belief that if enough people want the support, it will arrive, it's just a matter of time. If not obvious, my views on Opera have changed DRAMATICALLY since they added support for client-side XSLT. To have overcome the 'guilt-by-association' clause that came as part of the political battle between CSS and XSL proper (as in XSL Formatting Objects, XSL-FO, or, as the W3C still insists on calling the specification, XSL - which is obviously easily confused as being the same as XSL-T, or more commonly termed XSLT given it too is often refered to as just XSL) was a HUGE thing. By overcoming this I have come to believe that Opera (the company) is now in the business of serving up products that contain features and functionality the customer base (or potential customer-base) is desirous of. Before now, and to be completely honest, I pretty much put Opera into the same basket I put Apple... or in other words "we'll do it our way, we'll provide you with the features WE want to give you, and you'll either like it, or live with it... but either way, you have no say in the matter." Whether this was a fair 'basket' to place them in or not, thats the impression I had always had from them. But not anymore... and as such I now believe it can easily be stated that Opera is the 'King' of ALL browsers, and the rest of the browser world needs to start playing catch-up to them instead of the other way around.
Believe it.
Posted by m.david at 06:52 AM | Comments (0) | TrackBack
bobdc.blog: Scripting the addition of XML files to the eXist XQuery database
...and, as the above linked title suggests, has a nice intro into a fantastic open source XQuery database engine, eXist.
Scripting the addition of XML files to the eXist XQuery databaseSaxon is great for getting to know XQuery syntax (see part one and part two of my "Getting Started with XQuery" articles in XML.com for more on this), but it reads all of the data to query into memory, and much of the point of XQuery is to work with large, indexed, disk-based collections of XML that won't fit into memory. I've started playing with the open-source eXist XML database for this.
Sweet! (both the article, and the fact Bob's blogging.)
Subscribed. [NOTE: This is the short summary Atom feed. If you visit the Bob's entry page, there's a full entry Atom feed as well. Oh, and RSS "2.0" too.
BTW... why can't RSS "2.0" die a horrible "2.0" death? RSS 1.x/RDF is fine, but "2.0" really needs to just go away. Why?
Well, beyond the confusion of the chosen naming conventions of two active RSS projects, theres the fact that the RSS 1.x/RDF folks actually care about an effort to build upon a standardized format. While I'm pretty sure-to-absolutely positive the RSS "2.0" data feed for Kurt's and my podcast is evily innaccurate and would probably be refused by the Feed Validator with a simple "come back when you have a clue" error message in place of what would normally be a listing of all that is wrong with it, I have a real problem with the "movement" behind the RSS "2.0" fork. To be completely honest, I created what I assume to be an invalid RSS "2.0" data format in protest.
Huh? Well, I figure the best way to pay tribute to those in whom refuse to promote good practices in XML usage (see: my OPML post from a while back for more info) which includes usage of namespaces and an effort to standardize the specification is to take the same sort of attitude with the RSS "2.0" files I produce by hand. I mean if it looks (kinda) like an XML data feed and smells (even if the smell is more reminiscent of a data feed that just took a swim in the local sewage treatment plant and less like an actual standardized data feed) like an XML data feed, its an XML data feed, right?
No. But if a "loosey-goosey" non-standardized format is the suggested "power of RSS '2.0'" then loosey-goosey it will be. If "RSS happened outside of the standards bodies for good reasons" then for the same "good reasons" I guess there's no need for me to make any effort at conforming to a specification that, if it exists, doesn't really NEED to exist in the first place, right? :)
Of course, I'm not suggesting that this RSS "2.0" feed is all their will ever be for the eXplorations podcast. The Atom feed is something thats part of a much bigger "interactive podcast weblication" I'm working on. It's a small app that is about 1/3 of way done after 2 hours of work so it should be complete and live soon enough. But I can tell you right now I have no plans, desires, or intent to make the RSS "2.0" feed part of this app. It will be available, but I'm not going to spend my time trying to adhere to a spec that, if exists, I wouldn't even know where to find it.
Oh, and please... don't show me. Honestly, I don't care. If I want a hack, I'll hack my own data feed format. I don't, so I'll use Atom instead and be done with it.
Posted by m.david at 03:32 PM | Comments (0) | TrackBack
Microsoft to partner with...Richard McManus reports that Microsoft is ready to partner with a "Tier 1 internet company" in order to take Google down a notch. He speculates it might be Yahoo!
I have my doubts I can afford the time today to get this segment edited and posted... but it was a bit shorter in length than yesterdays 'office document format' debate, so if I can find a window I will spend some time editing this section and get it posted. Based on this info reported by Micah it seems now would be the time to get it posted such that we can see how it compares to what, if anything, does happen in this space...
Either way, I'll be sure to make this segment the next one I edit as the other segments, while still timely, are not quite as timely as this segment would be.
Posted by m.david at 03:15 PM | Comments (0) | TrackBack
Pushing String ? Is it just me…
In fact, I would even order it on pay-per-view...
Is it just me…Filed under: General— Eve @ 7:26 pm
…or are there others who think it would be a good idea, just to be absolutely above-board about all this, to openly strip-search the guy looking for bruises, and if they’re found, ceremoniously transfer him from the care of American guards to that of Iraqi guards, who will surely be much kinder to him after all he’s done for them
Question to all single and closed minded bleeding heart's (as opposed to open minded bleeding hearts. You're/They're not the problem...):
At what point in the known detailed history of EXTENSIBLE crimes against humanity cause you to feel the same way? Whether weapons of mass destruction were found or not, no one with credibility (obviously Saddam and a handful of other criminals suggest differently, but I would argue the previously stated credibility point and be done with it) has gone as far as suggesting Saddam to be an innocent "victim of the United States oppressive, aggressive, and suggestive points" that crimes against humanity, especially to this magnitude, warrant anything other than action to stop these crimes and stop them immediately! World police? If actually giving a shit about the lives of those who are murdered, oppressed, raped, beaten, stripped of all human dignity, and countless other awful and hideous crimes warrants just such a label... Then give me the T-Shirt. I'll wear it with pride.
In fact, you don't have to give it to me. I'll buy it myself.
BTW... Anybody who goes as far as suggesting that gardening, poetry, and reading of the Koran (or more properly, Quran) is "proof" that the actions taken by the US, Britain, and other like-minded nations who are more concerned with freeing from the control of a purely evil dictator the millions of oppressed and innocent human lives who have layed victim to this criminal for decades of unspeakable attrocities than they are with being "cool" and "popular", are anything but this? Please apply (liberally, I might add) my suggested point of credibility... to yourself. You need to wake the fuck up.
Btw.. regarding the Quran.
This sacred text of Islam is WONDERFUL scripture. If you haven't already, you really should take the time to read from its pages. If not from the perspective of religion and spirituality, then from the simple standpoint that understanding the teachings of this sacred text can make anyones life better when applied in the way these teachings were intended to be applied when written.
What do I mean by "intended" and how can I be sure that the "intentions" are what I suggest they are? To be honest, I wouldn't be qualified to properly answer that question. But I've listened to countless others who have professed what to them is the undeniable truth as to the meaning of these teachings. While non-agressive towards the proselytization of their beliefs, if you were to ask one of the billions of other human beings on this planet who have made this sacred text the foundation AND cornerstone of their life I'm sure you would find any one of them happy to explain what the Quran DOES teach, and what it DOES NOT.
If you are open minded enough to do this, I'm sure that you'll discover that similar to the criminals in Western cultures who use the sacred writings of the Bible and other scripture (or claimed scripture of their hate-fueled factions) to warrant their horrific actions, those in whom use the teachings of the Quran as similar justification for their actions are but a tiny, minute fraction of those who are true believers who live their lives based on the true teachings of the Islamic faith...
While not limited to these, some of the true teachings in which I speak are:
* Peace
* Love
* Understanding
* Kindness
* and the Sacred Nature of Human Life.
As mentioned there is a lot more to the teachings of Islam than just these mentioned attributes. But I'll let you discover these for yourself, if you haven't already. I promise, just such an action could, and most likely will, change your life... and change it for the better.
The world is filled with billions of wonderful human beings. Saddam Hussein IS NOT one of them.
Pass me the remote, would ya?
Posted by m.david at 12:35 PM | Comments (0) | TrackBack
Technorati Profile for M. David Peterson (mdavidx5)
This is a straight swipe of some of the CSS and the source markup sitting behind my Technorati profile. In reading a recent Tim Bray post I noticed a link to the Technorati "Kitchen". Had an interesting appeal to it, and for good reason... One of the current items "in the oven" is Technorati Explore which allows you to see who's getting the most attention for any particular tag or keyword search combination based on the number of links to that post (if I am understanding things correctly... not sure that I am as there are a TON of my posts included in the first few returned pages of the search for "XSLT" and as far as I an tell no direct links to them at the present time. So, I'm guessing anyway, this more thank likely means that when there are no links back to any particular post then it would seem likely that it would default to the next "ranking" mechanism, which I assume would be the total links to this blog in particular that are then weighed (again, I'm assuming) against some sort of keyword algorithm to determine how much value can be placed on the content of my site, or any other site, for a particular keyword or phrase. Its obvious something similar to this is in place behind the scenes if you view the ranked listings of blogs that claim a certain keyword... you will often find a blog in which has several hundred link backs that has a lower ranking than one with quite a few less, but, more than likely, a higher link quality rank for that particular claimed keyword.
I guess how its implemented is really not that important, especially given the fact that I have no clue how they do it, nor would I assume they would ever make that information public knowledge. So setting this aside and looking at the coolness factor instead, take a look at the latest feature that I noticed after searching the Explorer for "XSLT" and clicking on the bio of someone else to notice they've recently added a new feature to each profile. Using my own profile as an example, here's how Technorati is terming this new feature:
The cloud:
Posted by m.david at 01:36 AM | Comments (0) | TrackBack
Our first "real" podcast, this time around we got things a lot closer to the way they both should and will be as we continue forward. In this show Kurt and I debate the OASIS Open Document format, Microsoft's Open XML Format, and the significance all of this will have both in the here and now as well as in the future. The entire debate last about sixteen(16) minutes with another four(4) minutes of music and fun for a total of twenty(20) minutes in combined length.
We still have some mic balancing to debug, but overall this time around is 1000 times better than the last. This time around we got Kurts mic pretty much spot on but mine needs a bit more tweaking (you may want to turn the volume down a tiny bit lower than you normally might listen to a podcast. It can be a bit harsh on the ears as I'm noticing right now listening to the final MP3 output.) We're getting closer though, and this time is certainly better than last.
We actually recorded two hours of content last night which should equate to about one hour and fifteen minutes of total content. We covered five(5) total topics of which in listening to Micah's advice (and agreeing with his point that each segment needs to be between 15 and 20 mins in total length) we plan to publish one at a time as time allows to edit each segment. As mentioned above this segment covers the OASIS Open Document and MS Open XML office document formats.
Plenty of fun was had with this one. It can be enjoyed in mp3 and as soon as I have a chance to make the conversion, wma formats (I'll add the wma link to this post when its ready to go.) You can point your podcatcher at the RSS 2.0 and, as soon as I have a chance to create it, Atom data feeds such that you can automatically snag each podcast as it becomes available.
Enjoy your Wednesday! :)
Posted by m.david at 09:48 PM | Comments (0) | TrackBack
mozdev.org - xpcomviewer: index
Wow! Lots of blogging this weekend... This will probably be the last for a few days (although I won't swear to it ;) while I go back underground to finish book work. But it's an important post none-the-less.
Kurt just IM'd me, pointing me to the above link. The XPCOM chapter is my current in progress chapter for the Firefox title, and as anybody who's been working with XPCOM can tell ya, there's not a whole lot of (good) reference material to work with.
Welcome on project pages of XpcomViewer – extension 1 for exploring XPCOM components that are available on your target application.
OK, so the developers English isn't perfect, and the tool is a bit buggy (its not exactly Lutz Reoder's Reflector tool for .NET, but then again, what is? ;) Setting this aside, it does do a good job of exposing the current state of the underlying XPCOM components, something you will be hard pressed to find any recent, and as such, accurate documentation on.
I can tell ya my life just got a whole lot easier... If your into this kind of thing, I would highly recommend installing this bad boy... a definite MUST HAVE extension for anyone serious about developing applications for or extensions to the Mozilla platform.
Posted by m.david at 09:11 AM | Comments (0) | TrackBack
The notions that this should depend on a button that the author has to put in the page, that it should be decorated with a vacuous icon or a geek acronym, and that the the user has to copy the link and paste it into some other program, well that’s just lame-brained, and Mom won’t do it.
You sure you got that right Tim? The only thing that needs to be "put" into the page is the same auto-discovery 'link' element that they're more than likely putting there already, and copy-and-paste the link? Nope. Clicking the little orange icon, in Firefox anyway (not sure about IE, but I think we can assume the action will be similar, if not even more automated), pops up the standard bookmark dialog, giving you the option of where you would like to store the feed, and then rendering this feed as a menu wherever you decide to store it. The default (In Fx 1.5 anyway, not sure about 1.0.7, but earlier versions defaulted to the 'Bookmarks' menu item on the menu bar) defaults to the Bookmarks toolbar so a quick click of the bookmarked item drops-down a menu of the entries.
Extending from your point regarding the Mac/Safari way of doing things:
Having recently purchased a Mac, I will agree that Safari has a much more finely tuned way of handling data feeds and I hope that Fx and IE choose to follow. But no matter... I've already written scripts for both of these browsers to act in similar capacity as Safari, and these will be made available in my 'Client-side XML' title from O'Reilly.
As far as the orange icon goes... I agree, a text-based solution would be better. But I don't see the same limitations you are suggesting, and furthermore feel confident in suggesting that MS will do a good job in marketing this new functionality, making the orange Fx button somewhat of a defacto standard that shouldn't be THAT hard for people to figure out. I mean we can't exactly expect everyone to understand our geeky iconic lingo, but not everyone on the planet is a blathering idiot either. My own feelings are that people will adapt just fine. But, those are my own feelings and I will most definitely give credit to the fact that your experience and understanding of these matters is greater than mine, in many areas by quite a bit. So I guess I'll just leave it at that and see where things end up a year or so from now.
[UPDATE: Extending from this, take a look at this entry on the IE7 blog. While in versions of Fx previous to 1.5 the orange icon was in the bottom right hand corner, by default anyway, of the browser window, in 1.5 its now in the address bar. Much more intuitive. Furthermore, on then entry linked above, you'll notice that the IE team is going to great lengths to ensure that all of these little icons and warnings are using much more user friendly and obvious visual patterns to help make the user experience a much safer, easier, and enjoyable experience overall. Whats even more interesting is this part of the entry:
On Wednesday, we met with folks from other browser vendors including Mozilla (which is the basis of Firefox), Opera and Konqueror to discuss this situation (other browser vendors were invited but weren’t able to attend)
Maybe the Mac/Safari folks felt they were represented well by the Konqueror folks? Or, more than likely, since Mac has a tendency to believe there way is best maybe they just figured that there attendance really wasn't all that important anyways.
Although, theres always the point of interoperability... but we don't need interoperability between browsers, do we? ;)
Yeah, we do.
It's too bad the Mac folks don't see things quite the same way. But its not all that surprising either.
]
Posted by m.david at 06:12 AM | Comments (0) | TrackBack
IE Tab, an extension from Taiwan, features Embedding Internet Explorer in tabs of Mozilla/Firefox.This extension is derived from the famous extension IE View, but they are quite different.
While IE View always open IE-only pages in newly launched windows of Internet Explorer, IE Tab can open them in tabs of Mozilla/Firefox.
I've been meaning to blog about this for a while. While there are a few caveats to be aware of (User Agent is sent as Firefox, so non-Fx supported sites such as windowsupdate.microsoft.com won't work if the user agent is detected and is set to throw a "Browser Not Supported" message to the client instead of the regular page content when this takes place...) this extension is a pure gem and, after reading all of the warnings and potential problems listed on the page linked above, if you can live with them, should be added to your list of MUST HAVE extensions.
One caveat that should be painfully obvious: This only works on Windows boxes. Something tells me that those not using Windows boxes could care less anyway, but consider yourself warned none-the-less. ;)
Posted by m.david at 05:49 AM | Comments (0) | TrackBack
The approach is simple: given the string in an HTML file, almost any parser will treat this as an comment. Except for Internet Exploiter, which will treat "Foobar" as if it was part of the regular text. Instead of "Foobar", you can load an override stylesheet to work around Internet Explorer bugs. Note that as a side effect, MSIE is not a standards compliant parser for XHTML. ;-)
While there's an obvious known need to change the name, Dean Edwards IE7 project uses the same method as described above to single-out IE browsers who version is less than '7' and applies his ever increasing library of Javascript functions that will convert at load time the DOM of any given page into something that IE can either understand (as is the case with the provided XML Namespace support) or provides the requested functionality directly (as is the case with much of the provided CSS 2.1 and 3.0 support) using Internet Explorers support for behaviors (I believe this is the case for all of the CSS support, but I'm not certain -- some of it may be pure Javascript hacks as well.) If you want this support for IE browsers (to be honest, I'm not sure how well it handles IE 5.5 and 5.0 -- and I must admit that I find it surprising that 6+ years old browsers are still being used in any great capacity... but a quick glance of any give log file report will showcase quite well the fact that they are) then this is an absolute gem of a tool provided free of charge/licensing fees by Dean and his masterful skills in the art of Javascript and Javascript DOM rebuilding.
A few other items that Dean provides, again, free of charge/licensing fees that are worthy of several industry awards in and of themselves (note: a lot of these projects are now a part of his IE7 project and as such do not require separate inclusion in the pages you want to use the functinality on):
/packer/
Compresses Javascript files into "byte-sized(sic)" versions of the original using a variety of possible compression algorithms of which will be decompressed and loaded into the DOM via via a tiny decompression script thats included with the file (no need for extra client-side script inclusion.) I've found that Javascript files, such as Manos Sarissa project, can be compressed down to at least 25% of their original size without so much as causing more than a fraction of a second of decompression time to bring it back to its original (without comments I believe) state on the client.
What makes things even better is that Jesse Hansen has converted this script into a .NET assembly, of which you could even use in server-side ASP.NET applications for 'Just-In-Time' compression of dynamically rendered Javascript. While this doesn't make sense for really small scripts, for anything over a couple of K it can really reduce the overall bandwidth and as such, load time and performance of any given client-side application.
Could it get any better? Yep. Rob Seiler has created a Perl version as well as a Windows Scripting Host (WSH) version for command line based conversion of your Javascript files. Sweet!
Other projects that provide excellent client-side functionality for your web pages:
Stealing Deans description of this project:cssQuery() is a cross-platform JavaScript function that enables querying of a DOM document using CSS selectors. All CSS1, most CSS2 and some CSS3 selectors are allowed.
The function returns a JavaScript array of matching elements.
Yet Another Swipe of Deans explanation:An XBL binding that allows Mozilla browsers (Netscape, Mozilla, Firefox etc) to use Microsoft DHTML Behaviors without any conversion. Mozilla and Explorer may then reference the same behaviors (.htc files).
You can find more of his work on the same page as linked above.
My only question at this stage is when is Dean's awards show, and who do I have to bribe to get front row seats and backstage passes so I can shake Deans hand in person and say thank you for all of his hard work? :D
In the mean time, while I wait for this information, thanks Dean! Your work is VERY MUCH appreciated!
Posted by m.david at 02:42 AM | Comments (0) | TrackBack
Just over a year ago I posted an entry in which I explained an experience I had with Tim Bray explaining the process of attempting to learn and understand XSLT. Recently I was searching for an unrelated image via Getty Images image association search tool when I came across an image that reminded of that night as it seems to fit perfectly the explanation in which he gave.
To first understand how the image is associated, in recap here is both my explanation of the experience as well as Tim's follow-up helping to clean-up and clarify my interpretation of his explanation a bit(the image then follows):
My explanation:
While sitting at the Skamania Lodge bar and surrounded by a sea of gawking fans (actually I think it was just me, Adam Kinney, and possibly Steve Maine but I can’t be certain… I was too mesmerized by the moment ;) Tim Bray declared that to understand XSLT you must first reach up with both hands and grab the two halves of your brain peeling each back until you have successfully turned your brain completely inside out (I wish I could remember the exact quote as it was a lot better than my description… Tim, if you happen to read this could you please give us the official “Tim Bray’s Definitive Guide to Understanding XSLT” description… for the record :)
Tim's response:
That's amusing but I don't *think* I said it.... mind you, we stayed up pretty late. I seem to recall saying something along the lines of a long-time procedural-language guy like me having to invert the brain to use XSLT effectively... -TimThe image:

Posted by m.david at 01:32 PM | Comments (0) | TrackBack
Science journal finds Wikipedia pretty accurate - Tech News & Reviews - MSNBC.com
SAN FRANCISCO - Wikipedia, the encyclopedia that relies on volunteers to pen nearly 4 million articles, is about as accurate in covering scientific topics as Encyclopedia Britannica, the journal Nature wrote in an online article published Wednesday.
Of course, most of us were already keenly aware of this. But it's nice to see a scientific journal with credibility (Nature) stand up and make a statement that can now be referenced as proof that the Wikipedia system works.
Also, muting my concerns that Wikipedia could be held liable for innaccuracies of content:
In a recent article on FindLaw, Anita Ramasastry explains:
What if Seigenthaler had, instead, tried to sue Wikipedia to force it to take down the entry - and to pay him damages for reputational injury?As I will explain, the court very likely would have dismissed his case - based on a federal statute that confers immunity from lawsuits upon those who host content on the Internet.
Excellent! Long-live the Wikipedia! Just don't purposely author innaccurate entries. I'm all for pranks now and again to keep life interesting, but posting them as reference material on Wikipedia in general and even more so regarding content that goes to the extent of falsely accusing someone of murder? That's just flat out stupidity.
Other Wikipedia-related links:
Slashdot recently reported of Wikipedia's new 'Semi-Protection' policy to help in the fight against Wikispam/page defacing.
Up-to-the-minute news updates on Wikipedia-related content can be found on Yahoo! News, MSN Search News, Google News as well as on del.icio.us search, popular, and tag(which interesting enough, at present time has no tagged links. A system glitch, I'm guessing? Actually, they must be in the process of moving servers or something equally as disturbing to the system as I am having troubles logging in and there are no listings in the 'recent' section of the front page. Lets hope this to be a minor, short-lived glitch. [UPDATE: Problem seems to be fixed now. If in fact they did move servers to Yahoo!'s server farm (see: y.ah.oo! entry on the del.icio.us blog for more details. I'm assuming this doesn't have anything to do with the Dec. 14th power failure, but it could be related from the standpoint of syncronizing the databases, etc...) and this was the only hick-up, I must say, I'm pretty impressed.])
Posted by m.david at 11:43 AM | Comments (1) | TrackBack
BBC NEWS | Programmes | Click Online | Microsoft's vision of the future
Everyone has a different idea of what fun gadgets they would like to see in the future, and some of Microsoft's researchers have been demonstrating in Brussels what they hope might take off.
Posted by m.david at 11:18 AM | Comments (0) | TrackBack
WTO leaders reach breakthrough on trade deal - International Business - MSNBC.com
HONG KONG - Trade negotiators reached a breakthrough Sunday on a last-minute deal, likely averting a collapse in talks that could have seriously crippled the World Trade Organization's ability to promote global free trade.
Obviously not a whole lot can be said until the agreement is signed and a copy published. From the above linked story it does seem as if each of the delegates from the 149 represented nations and territories are moving towards approval of the deal. With prior concern of complete and total collapse, this is definitely good news. However, until the details of the agreement are more completely understood who knows what this means in regards to bringing an end to trade sanctions against countries in which innocent citizens are forced into a life of poverty because of these sanctions.
It does seem as if there is hope. Hope is a good thing.
Posted by m.david at 10:39 AM | Comments (0) | TrackBack
Hotwiring Your Search Engine - Newsweek Technology - MSNBC.com
Why do online journalists who can barely turn on their computer try to pretend that the fact they can means they are now an "Online Expert" and as such have a license to make statements such as the following as if they were just giving out fact in which "EVERYBODY ALREADY KNOWS THAT!"
"Don't they?"
If search-engine rankings are supposed to represent a kind of democracy—a reflection of what Internet users collectively think is most useful—then search-engine optimizers like Fishkin are the Web's lobbyists. High-priced and in some cases slyly unethical, SEOs try to manipulate the unpaid search results that help users navigate the Internet. Their goal is to boost their clients' (and in some cases their own) sites to the top of unpaid search-engine rankings—even if their true popularity doesn't warrant that elevated status.
Um... if that flabble-babble above me is any indication of what you know about search engine optimizations, while I can't speak for everybody, I certainly can for you as you have no damn clue what your talking about. If SEO was as easy as simply getting the most links and as such being deamed the "most popular site one the web for[UPDATE: Hmmm... In re-reading this, this statement really doesn't fit. To be more accurate, I am changing this to instead read as follows] If building a search engine as capable as Google, MSN Search, and Yahoo! was as easy as simply counting the links from around the web, sorting them based on this count, and as such defining the "most popular site on the web for: [fill in searched for phrase]" based on greatest to least then don't you think now pleasantly rich ex-Googleites looking to be their own boss would be birthing MiniGerber-Google's all over Silicon Valley in the same way Baby-Bills were .dot'n the Puget Sound area in the mid to late 90's? [note: I updated this section with various snips here and there beyond the first mentioned update but to keep thing a little more clear, given that they were fixes to spelling errors or simple changes in the way something was phrased, I chose to avoid confusing things even further by making in-line notes in regards to these changes. If curious, I've copied a version of the original to http://www.xsltblog.com/archives/2005/12/ranked_by_popul-original.html]
While its not as easy to "get a clue" via Google's online interface, heres an excercise that might make your articles more interesting:
- Go to http://search.msn.com
- Search for anything you want, go ahead, it can be anything, really.(just so you are aware theres no funny business going on "behind the scenes." Would hate to see what kind of headline you came up with if given ANY opportunity to suggest you'd been had by a hacker.)
- Now (and this might get a little tricky for you, so you should pay real close attention) go to the upper portion (another word for that would be "top", just in case you're not sure why the strange usage of the word "upper"... yep, believe it or not "upper" can also means towards the top of a given object, and not just something to "pick you ^-up-^ when your feeling v-down-v.." You feel down a lot, don't you... yeah, I bet..)
- Ok, so now that we're feeling good and have our mouse moving towards the ^top^ of the screen, let's try and find (and this is a big word, so you might want to grab your dictionary... I'll wait(but no stoppn' to powder your nose there sniffy... I'm watching.) the phrase "+Search Builder" (yep, the + sign too)
- Find it? GREAT!!! Good job. We should celebrate!(every reasons a good reason to celebrate, right sparky?!)
- But not yet... and put down the lighter there puffy... damn, do you take everything literally?
- I think I'd better speed this up.. I don't want to be around when your jonesn' for a Xanax.
- OK, Click the area around the "+Search Builder" text. Whoa! I know, just kind of jumps out at ya, doesn't it... ahhh, hell... you need that Xanax now don't ya.
- Damn.
- OK, I can't deal with ya no longer... just play around with those buttons. K? See how you shift and change your results based on all sorts of nifty "hacks"?\
- Oh no. You don't think you're a hacker now, do you?
Probably.
---
So if anybody reads this blog, and isn't a real geek in one sense or another -- just so you know... Search Engines like Google, MSN, and Yahoo! use LOTS and LOTS of different ways to determine what link gets placed first, second, third, and so on for any given search query. And guess what... they don't announce to the world the "secret" formula to their page ranking engines.
"But that's not fair!"
Nope. It's called "business" and "strategy" and several other words that I would use, but I'm already in near need of one of those Xanax myself by just being around you there flippity-doo-dah.
Gotta run...
Oh, BTW... if you want fair? Try here or here. Although please don't come back and ask me how these are more "fair" than Google or Yahoo! or MSN are "supposed" to be. Again, and more so, for the record... search engines are not your stand-in representative's for all thats fair and good on the internet. Try and force this type of Dogma on the search engine industry and we'll end up with front-end interfaces for the "Left Wing", "Extreme Left Wing", "Fundamentlist", "Constitutionalist", "Realists", "Pesimists", "Right Wing", "Extreme Right Wing".... and skipping through about 2 million other potential "We're the "Fair" search engine" front-end interfaces and on to what I assume would be your personal vote...
The "Fascism" front end.
I mean, fairs fair as long as there is politically controlled and motivated profit involved, right? or is it left?
middle 2 right 2 left 2 middle?
ahh, hell, look it up in Wikipedia, I'm outta here...
Posted by m.david at 03:10 PM | Comments (0) | TrackBack
Dare Obasanjo aka Carnage4Life - Tim Berners-Lee is blogging.
Dear God,Yet again I have only one request... Please encourage Tim Berners-Lee to blog. I realize this is a long sho... whats that?
Tim Berners-Lee is blogging.
I found Tim Berners-Lee's blog today. Subscribed!!!Sweet! Well, I guess thats its for now. If I do need something though, trust me... you'll be the first to know.
Oh, by the way... for those of you who just stated... "Thats boy's going straigh to Hell." I can only answer with:
If Tim Berners-Lee is blogging, I could really give a shit... Wherever I am I'm going to be reading his blog, so I doubt much it matters much what my actual surroundings happen to be.
Although, I don't really like heat all that much, and its hot in Hell, ain't it?
Dear God,One last thing.... Can I borrow a fan?
Posted by m.david at 12:43 PM | Comments (0) | TrackBack
del.icio.us bookmarks for 2005-12-15
"m.david : First podcast now available, ChannelXML Forums now live": First XML podcast? (from mdubinko)
Fortunately Micah's got my back... Pheewwww... That could have been embarrasing :) I coulda' ended up looking like a damn fool... (hey. no comments from you there sporty spice..)
Thanks Micah! Looks like I owe you one(again!) ;)
[UPDATE: Uh, just in case anybody thought this was actually me being all pissy...
Please know its not... I promise this is nothing other than a "Yo Micah, what up? Thanks for the del.icio.us linkage!" post, just kind of twisted into my own way of saying "Yo Micah, what up? Thanks for the del.icio.us linkage!". If this was a concern, please rest assured that all this really was was a way of saying "Yo Micah, what up? Thanks for the del.icio.us linkage!".
Why not just say "Yo Micah, what up? Thanks for the del.icio.us linkage!"? Cuz' why just say "Yo Micah, what up? Thanks for the del.icio.us linkage!" when you can instead have some fun with words while at the same time stating "Yo Micah, what up? Thanks for the del.icio.us linkage!"?
Can you see my point? Cuz' if you need more evidence I... Ok, for your sake an my sanity, (or is it my sake and your sanity... either/or... pick which suits you best and go with it. ;) I'll discontinue my banter. For now. ;)
Until next time... Enjoy your del!icio!us/ly/and/nut!ritio!us/ly/enhanced/day! Micah! (and the rest of you as well, of course)
Posted by m.david at 05:14 PM | Comments (2) | TrackBack
Bush Accepts McCain's Ban on Torture - Yahoo! News
Senator John McCain can speak from experience in regards to the awful pain, suffering, and degradation as a human being that comes from being a victim of torturous acts as he was held captive as a prisoner of war for many years (I believe five(5), but I'm not certain.)
WASHINGTON - President Bush reversed course on Thursday and accepted Sen. John McCain (news, bio, voting record)'s call for a law banning cruel, inhuman and degrading treatment of foreign suspects in the war on terror.
He beat the odds then, and he's beat them again now.
Good for you Senator McCain.
Posted by m.david at 09:39 PM | Comments (0) | TrackBack
Dare Obasanjo aka Carnage4Life - Don Demsak on XSLT 2.0 and Microsoft
There is a lot of stuff which I agree with in Don's post which is why I forwarded it to some of the folks on the XML team. I'll be having lunch over there today to talk about some of the topics it raisedDon does gloss over something when it comes to the decision between whether Microsoft should implement a technology like XSLT 2.0 or whether we should just make it easy for third parties to do so. The truth is that Microsoft now has a large number of products which utilize XML-related technologies. For example, implementing something like XSLT 2.0 isn't just about providing a new version of the System.Xml.Xsl.XslCompiledTransform Class in the .NET Framework. It's also about deciding whether to update the XSLT engine used by Internet Explorer to support XSLT 2.0 (which is an entirely different code base), it's about adding support to the XSLT debugger in Visual Studio to support XSLT 2.0, and maybe even updating the Biztalk Mapper. Users of Microsoft products expect a cohesive and comprehensive experience. In many cases, only Microsoft can provide that experience (e.g. supporting XSLT 2.0 across our entire breadth of technologies and products that use XSLT). It was a really tough balance deciding what we should make extensible and what was too expensive to make extensible since we'd probably be the only ones who could take proper advantage of it when I was on the XML team. I'm glad to see that some of our MVPs understand how delicate of a balancing act shipping platform technologies can be.
Cool. Glad to see that Dare has taken the initiative to propogate this message across campus in a way only he would be capable of. Good on ya Dare. I for one, and I assume I can speak for others as well, appreciate the efforts you are putting forth on behalf of the XML development communities at large, both internal and external.
Posted by m.david at 08:05 PM | Comments (0) | TrackBack
m.david : First podcast now available, ChannelXML Forums now live
It's been a long time coming but I am happy to say that Kurt and I have finally finished our first podcast, its been edited (kinda) and it's now available for download. As per my recent post to my ChannelXML blog:
First podcast now available, ChannelXML Forums now liveThis is a quick post to announce that Kurt and I have FINALLY finished was we are now deaming our "Pilot" podcast... not that we plan on cancelling our own show, but the quality is a bit -- ummm -- shoddy would be a good word. Its not horrible and in fact its not too bad at all. But it can use some significant improvement, something we have the equipment to handle, but with as many problems as we have had trying to coordinate schedules and such we were both left recording this on our laptops using the built in Mics. Thousands of dollars spent on recording equipment to try and make this as professional as we could is this is what we were left with.
Such is life. :)
As mentioned, the first podcast is available now and can be accessed here.
The forums are also now open... But given that we havent really defined what this site is going to be all about, there may not be all that much to talk about. But there will be... so please bookmark the entry page into this site and subscribe to the various feeds of interest and stay tuned.... much more to come as we bring this year to a close and begin next year with a "bang" (more on just what that "bang" is in the coming weeks)
Until then,
Enjoy!
This will become much more organized, with proper RSS feeds to add to your podcatcher's, but for now we simply wanted to get this out there and just learn as we go how to make this something we both love to produce and you love to listen to (that's the goal anyway.)
Quick note: I recorded the intro separate from the other recordings so there's an obvious point where it jumps from my intro which was recorded using a professional mic, and the recording from the actual conversation between Kurt and I on Sunday night. This won't be a common occurence and is one of the reasons we are terming this a "pilot." The conversation is interesting and I think well worth your time to take a listen. So please forgive us for the few hiccups here and there. We're still in the learning stage of this new and exciting medium... so stay tuned. :)
Topic of this weeks show: The New and Improved "Web 2.0" Browser Market where we discuss everything from Opera's sudden and immediate reammergence as a technology leader and front-runner to our various feelings towards Mozilla "spin-offs" such as Flock.
Much fun is to be had, so don't miss out ;)
Posted by m.david at 04:45 PM | Comments (1) | TrackBack
Signs on the Sand: IE7 to adopt orange Firefox RSS feed icon
Wow!
This is surprisingly cool news - Microsoft RSS Team decided to adopt this orange RSS feed icon used in Firefox to be used in IE7 too. The guys from Mozilla happily allowed the usage of the icon. Here is what Jane from Microsoft RSS team writes:
Please see the above linked post for the rest of the juicy details.
Posted by m.david at 12:01 PM | Comments (0) | TrackBack
Ok, so I straight-up robbed the above titled joke from an OpenMP article in Octobers edition of MSDN Magazine. You might be asking yourself "If you're going to steal a joke why not at least steal a good one?"
Hmmm... Where were you with that advice like 2 minutes ago?
Some friend you are. ;)
So, anyway... I was sent the above link in an email from a friend which was prefaced with the following:
Will Increased CPU Bandwidth Translate into Usable Desktop Performance?http://acmqueue.com/modules.php?name=Content&pa=showpage&pid=333
reminds me that there's still no parallel XSLT execution engine.
This was then followed up a few minutes later with:
OK,Here's a good answer:
http://msdn.microsoft.com/msdnmag/issues/05/10/OpenMP/
Seems like one could immediately and easily produce parallel programs
using OpenMP -- of course in .NET this is currently possible only
using managed C++ that calls other managed code.No wonder they used OpenMP in XBox 360.
It was about a year ago (Wow! Has it really been that long?) that I first started blogging about Parallel Programming. In fact it was this same hacker friend who sent me an article that initiated this quick post on Christmas Eve (yep, I guess it has... dang... I can't believe that was almost a year ago...) of last year.
It was around this same time frame that I picked up a copy of "Patterns for Parallel Programming":
[NOTE: The above link includes info regarding my Amazon Associates account, so in essence this is an ad of sorts. I am advertising this book because I absolutely LOVE it and think you would to. I'm mentioning this simply because I mentioned at one point I might begin to incorporate ads of products I believed to be good products and could stand behind as well worth spending your hard earned money on. This is one of these products.]
On the back of this title you will find:
From grids and clusters to next-generation game consoles, parallel computing is going mainstream. Innovations such as Hyper-Threading Technology, Hyper-Transport Technology, and multicore processors from IBM, Intel, and Sun are accelerating the movements growth. Only one thing is missing -- programmers with the skills to meet the soaring demand for parallel software.
Yikes! Hmmm... probably something to think about whether you're a CS student or a seasoned hacker alike.
So going back the the content in the last quoted section this point:
of course in .NET this is currently possible only using managed C++ that calls other managed code
in all honesty... Has me coughing and hacking and making me wish I never did learn that damn programming language. Bluuucckkkk...
But the original point:
reminds me that there's still no parallel XSLT execution engine.
is well taken and has me actually thinking about how I would begin architecting and writing just such and XSLT 2.0 processor in C++.
At the moment its just food-for-thought as time doesn't allow for any new projects just at the moment. But it does have me questioning whether there are others out there who might consider sharing the work load of developing just such a processor if I were to start up a new project at some point in the future focused on just such an endeavor...
If you happen to have interest in a project such as this, drop me a line.
Posted by m.david at 10:50 AM | Comments (0) | TrackBack
Overdo's Land of Nothingness: Windows Live Call & MCI (Part II)
In a recent post by Dare Obasanjo he points to the above link in which starts off:
Just a quick post to add this screenshot. Note the logo in the bottom right corner :)
If you take a look at the bottom right hand corner of the image below you'll notice an MCI logo. While I can recognize the reason for the excitement, what has me scratching my head is the logo in the middle left-hand of the screen-shot:

WTF? Maybe it's just my lack of vision but I'm trying to think of any and all reasons why I would want to communicate in real-time with McD's via my IM client. Are there that many people who are desirous for up-to-the-minute pricing details on Big Mac's? I guess I can kind-of sort-of see using this as a way of pre-ordering my food, but how much faster do I really need to have my McYackn'Jack's? Is 30 seconds just not fast enough for some people?
God help us all if we've reached that level of "gotta-have-it-now!" within our combined societies. ;)
[UPDATE: I guess there's always the possibilty of a delivery service. But if I'm not mistaken they've tried that before and failed miserably. It's hard enough to manage a product with a 10-minute shelf life without adding in the time it takes to deliver it off-site. I guess if they started putting in McD's Express (do those even still exist?) inside of corporate office-buildings/plaza's they might have a fighting chance. I guess its just one of those "wait-and-see" sort of things.]
Posted by m.david at 02:36 AM | Comments (2) | TrackBack
Big Government sanctions against smaller, poor countries are controversial AT BEST. While I doubt many of us in the Land of Geek have the kind of experience that would enable us to understand all there is to understand in this area, or any political area for that mattter, what we can understand is that generations upon generations of innocent citizens of these countries are the one's who ultimately suffer because of the actions of relatively few individuals who have abused the systems.
No matter your perspective on such matters, innocent victims continue to suffer because of controlled political sanctions. This isn't famine. This isn't unknown diseases wiping out populations of people of which absolutely nothing could have been done to save them at that time. These are political decisions made by the same forces that can undo those decisions. Screaming and yelling at the TV does nothing. Talking amongst your friends at work that does not lead to action, means nothing.
Sending an email right now means something. At this moment in time, isn't that difference?
Tomorrow is too late. The trade talks in Hong Kong are going on right now. In fact a few hours from now may be the difference between taking a stand that means something, and taking a stand that means something, just not the kind of something that really matters anymore. At least not in regards to today's trade talks. It might mean something to you internally, and thats good... but for you, not them.
Got an extra 30 seconds to spare between now and 10 minutes from now?
Probably, huh.
Make ONE Big NoiseOn December 13th, the world will sit down in Hong Kong for trade talks that have the power to transform millions of lives through fairer trade. On the table will be proposals to change the rules so trade becomes part of the solution to poverty, not the cause.
At the G8 Summit, we called on world leaders to do more to fight extreme poverty and global AIDS. They heard us, and this meeting is the next step in helping the world’s poorest people. Our leaders need to know that we’re still watching and want real progress.
Add your name to the ONE Big Noise letter today and ask President Bush to take this opportunity to fight extreme poverty by making trade fair.
Posted by m.david at 04:13 PM | Comments (0) | TrackBack
Understanding XML: Lights in the Darkness
Pay Attention!
Well, to Oleg and Kurt anyway... ;)
via Kurt's recent post linked above we find:
I'm going to echo a call made recently by Oleg Tkachenko, and actually broaden it a bit. I'm working independently, but I'm trying to put together a formal white paper on XSLT 2.0 to provide a formal business analysis from both a business and programming perspective.If you are currently using XSLT 2.0 in your business processes, if you are exploring XSLT 2.0 and are seeking more information as to whether to adopt it or not, or if you have evaluated XSLT 2.0 and decided you weren't interested in that technology, I would ask that you send me an e-mail at kurt.cagle@gmail.com indicating if you would be interested in participating in an e-mail or telephone survey.
I will be making the report publicly available once completed, and hope that it can be used as a resource to help you determine implementation strategies (or even if its useful) for upgrading to XSLT 2.0.
So whats left for me? Well, it seems Kurt and Oleg have got the bases covered in both locating and gathering XSLT 2.0 use-cases and supporting code samples. So I guess that means I can continue forth in my quest to piss off as many industry luminaries as I can get my grubby little blogging hands on, huh?!
WOOHOOOO!!!!
[Question-to-self : Dude, are you a fucking idiot?] :D
[Answer-to-self: Hmmm... good point.]
Or maaaaaaybe I should just focus on finishing chapters in the two books I'm currently responsible for delivering yesterday, and in my spare time finish off Project "Deep Saxon.NET/System.Xml Integration" while spreading love, joy, and cheers of merriment to all my brothers and sisters in code.
Probably be best, huh?
Yeah.
Although there are times I just loathe my inner voice...
"One of these days inner voice, one of these days..."
[NOTE: To those of you new to reading this blog, I promise the above is just me blowing off steam at the end of a long day of writing and coding... I'm not as crazy as the above probably lets on... well, not completey anyway ;)]
Enjoy your Tuesday :D
Posted by m.david at 10:47 AM | Comments (0) | TrackBack
XSLT 2.0, Microsoft, and the future of System.Xml
There's a reason I should never and will never run for public office... I hate to keep coming back to this point, but growing up with five sisters meant spending my life from one "trauma" to the next. Such a curse blessing has caused me, believe it or not, to have a tendency to wear my emotions/heart on my sleeve.
I know! It is hard to believe, I'll admit. But its true. You may just have to trust me on this one ;)
To my defense, I always thought it was normal... So it just kinda stuck.
So anyway, as a result of all this, I have a longstanding joke with Don, but we both know it ain't know jok't'all...
I do all the damage... He fixes all the damage I do.
It's a nice working relationship(for me anyway... I kind of have my doubts he sees it quite in the same light... I think we can safely state that I'm up to my eyeballs in "favors" owed to the East Coast Don ;), and one I have come to rely on more than once.. ok, more than twice... OK, FINE! More than 18-37 times, depending on whether you consider the aftershocks a direct effect of the main event. If yes, then 37. :D
You wanna glimpse at why I have come to rely depend on him so much...
Take a gander...
I’d prefer to see the System.Xml team grow and become full partners with teams like ASP.Net and the CLR team. I’d like to see the XML based languages become first class programming languages within the Visual Studio IDE. That means not only using things like XSLT and XML Schema as dynamic languages, but also be able to compile them down to IL and compiled with the other .Net languages. I want to be able to create projects that contain not only VB or C#, but also XSLT and XML Schema (to name a couple), and have them compile into one executable. Then developers can use things like XSLT 2.0, or the next in vogue XML based language, and take advantage of that language’s unique benefits, without having to choose between a compiled procedural language (like C# or VB) and dynamic functional languages like XSLT. Linq is starting to bring in more of the functional programming style to the average procedural programmer, so I can start to see the rise public awareness of functional programming. It is only a matter of time before the average programmer feels as comfortable with functional programming as they do with procedural programming, so we need to look towards including these languages within the Visual Studio IDE (which then leads into my discussion about evolving Visual Studio into more of an IDE Framework, and extended with add-ins.)
Does anybody else find themselves a little teary eyed at the moment?
Hmmm... Just me huh? Damn.
Anyway, like I said...
DonXML For President! :D
Posted by m.david at 02:34 AM | Comments (0) | TrackBack
Sylvain just sent me this link... Looks quite interesting so I thought I would pass it on to you folks... [Thanks Sylvain!]
This is a brief introduction to Python for Lisp programmers. (Although it wasn't my intent, Python programers have told me this page has helped them learn Lisp.) Basically, Python can be seen as a dialect of Lisp with "traditional" syntax (what Lisp people call "infix" or "m-lisp" syntax). One message on comp.lang.python said "I never understood why LISP was a good idea until I started playing with python." Python supports all of Lisp's essential features except macros, and you don't miss macros all that much because it does have eval, and operator overloading, and regular expression parsing, so you can create custom languages that way.
Posted by m.david at 01:57 PM | Comments (0) | TrackBack
via last Friday's announcement:
Hello IronPython community,We’ve just released the newest version of IronPython – 0.9.6. This is most likely the last Alpha version of IronPython before the end of the year when we play to release IronPython 1.0 Beta 1. This build includes many bug fixes for issues reported to us by the community as well as support for many new modules. We are continuing to drive completeness of the Python and support for interoperability between .NET and IronPython. Here are the highlithts of the 0.9.6 release, the full list of changes is included at the end of the mail:
All missing dictionary methods are now implemented
Parser changes for tools integration
Weak reference support
Itertools module is now implemented
Improved debugger sequence point generation, parser & tokenizer improvements
Python equality/hashing and CLR equality/hashing separated
Unhandled exceptions are no longer passed to the OS
Exceptions have better stack traces in the interactive environment
locals() support for most common usage scenarios (but not execfile or eval yet)
Regular expression improvements: Implement missing methods, support Python named groups, fix match implementation when matching in the middle of a string,
The bits can be accessed for here.
Posted by m.david at 10:49 AM | Comments (0) | TrackBack
Dare Obasanjo aka Carnage4Life - XSLT 2.0 and Microsoft
[UPDATE: Dare has taken a moment to clarify his point in making the post in the first place. Please see his comments below.]
My advice to Oleg, if you want to see XSLT 2.0 in the .NET Framework then gather some like minded souls and build it yourself. Efforts like the MVP.XML library for the .NET Framework shows that there are a bunch of talented developers building cool enhancements to the basic XML story Microsoft provides in the .NET Framework.
Hey Dare, we're way ahead of you buddy. But thanks for the advice...
So the rest of you can understand why the effort is being put forth to enourage MS to directly support XSLT 2.0 as opposed to simply accept the fact that there are other alternatives is that a MS supported XSLT 2.0 product ensures that the support exists out of the box, and MS is taken the brunt of the support effort. As much time as we are person ally willing to put into these projects, there's no way on God's Green Earth we can personally attempt to support 10 million+ developers. Direct MS support also showcases the fact that MS is commited to a technology and encourages developers to use it. That's not to say that I personally fear (can't speak for Oleg, but I would tend to think he at least generally agrees) that if MS doesn't provide support that XSLT 2.0 will die a miserable death. It will live on, I can make that a personal guarantee. But that doesn't mean that EVERY effort shouldn't be made to encourage MS to provide direct support. As such, the encouragement will continue.
Oh yeah, the advice to Dare...
Pay attention.
We're not idiots, we know how to play this game. We're not resting on our laurels and sitting around for MS to take action. If you're not going to both recognize and support our efforts, then get out of the way. Don't worry, we can handle it from here.
Posted by m.david at 11:24 PM | Comments (2) | TrackBack
Signs on the Sand: XSLT 2.0 and Microsoft Unofficial Survey
Not that I would want to encourage anybody who truly doesn't care one way or another to go cast your opinion in Oleg's survey, but for those who do care but wouldn't go to the effort normally, the enticement of a free XSLT 2.0 title from Dr. Kay should give you a bit more incentive.
NOTE: This is a direct copy-and-paste from Oleg's recent post. The entire content of the post is important so hopefully Oleg can see fit to forgive me for Pirating the entire post ;)
via XSLT 2.0 and Microsoft Unofficial SurveyMoving along business cases Microsoft seeks to implement XSLT 2.0 I'm trying to gather some opinion statistics amongs developers working with XML and XSLT. So I'm holding this survey at the XML Lab site:
Would you like to have XSLT 2.0 implementation in the .NET Framework?
The possible answers are:
* Yes, I need XSLT 2.0
* Yes, that would be nice to have
* No, continue improving XSLT 1.0 impl instead
* No, XSLT 1.0 is enough for me
Vote now and get a chance to win the "XSLT 2.0" book by Mike Kay!
When the survey ends (probably in a month or so) one lucky survey taker from whatever part of the world choosen randomly will get the book.
Note: you have to be registered on the Xml Lab site to vote. Sorry, but I need some simple way to identify the winner. Registration is simple and public - no email verification or something like, just fill in your name, password and email, get registered and then vote.
Take your chance to influence Microsoft's decision on XSLT 2.0 and win XSLT 2.0 book!
Posted by m.david at 11:08 PM | Comments (0) | TrackBack
Compiling Little Languages in Python
``Little languages'' such as configuration files or HTML documents are commonplace in computing. This paper divides the work of implementing a little language into four parts, and presents a framework which can be used to easily conquer the implementation of each. The pieces of the framework have the unusual property that they may be extended through normal object-oriented means, allowing features to be added to a little language simply by subclassing parts of its compiler.
Very interesting article from John Aycock at the University of Victoria (Kurt's new stomping grounds :) It's old, but worth a read for sure. I'm slowly but surely trying to learn as much as I can about the Python language and this is definitely caused me to think a bit more serious about speeding up the learning process. :)
Posted by m.david at 07:43 AM | Comments (0) | TrackBack
But thats not the point now is it.
What I'd like to know is: does it give common questions a well-known, RESTy URL? Or are the URL's full of extra stuff, not really useful from a REST standpoint, merely adding overhead to folks that proverbially want to put the URL on the side of a bus?
This is a fantastic argument that Micah has brought to the surface. When we spend so much proselytizing the importance of XML being human readable -- using this argument as one of the many reasons why binary XML is a bad idea -- why then do some of us still force upon our site visitors URI's that make absolutely no logical sense to anybody BUT the developers who wrote the server-side processing code for this particular page type? Even then, the developers responsible for that particular page types processing code would have a hard time typing the URI for any given dynamically generated page by memory into the address bar or as a link within an email.
Question:
Which is more commonly "read" by humans: XML or URI's?
As long as you correctly answered that question, here's another(note: if you answered it incorrectly, and actually believe XML is more commonly read by humans... Please go away. I can't help you. In fact I doubt much anybody could as more than likely you're just like this guy. Go! Shoo! BeGone! Blaaahhh.):
Does it really make sense for the core XML community to argue against binary XML using its non-human readable aspect as one of the primary arguments, and yet not put that same level of significance upon using human readable and recalled-from-human-memory writable URI's as the basis for our web sites URI pattern architectures?
With as easy as it is to hide the inner plumbing of our web applications why do developers from both sides of the web application development fence (LAMP folks are just as guilty as IIS/ASP/ASP.NET folks, and in fact might even be worse although I will stop short of arguing why I think this as I have no actual data and only a general hunch to back up my claim) insist on keeping URI's in such archaic form.
BTW... having to rewrite the entire web application to be able to make the switch would be the wrong answer for justifying such nonsense.
How so?
On Apache:
Turn the rewrite engine on, write custom handling rules using Regular Expressions of which the rewrite engine will then transparently pass the request to the correct process with the properly recreated URI that your application currently understands.
Amount of work required to make the conversion:
If you understand Regular Expressions, not very much at all. If you don't, pay somebody who does. Trust me, they're worth every penny they charge. :)
On IIS: Write a custom handler in IIS. Register this custom handler in your web.config file. When parsed, rebuilt, and the values of any necessary variables set, use Server.Transfer(which is not only transparent to the user but allows the ability to maintain state of stored variables for the next process to access) to pass the translated URI to the correct server side process with the proper variable values already set and ready to go.
Amount of work required to make the conversion:
While Regular Expressions are a very powerful option, if the variations in your pattern usage are minimal, you can use pretty much any built-in ASP.NET method for URI processing and/or pre-set URI/Browser properties (such as the QueryString collection or the HttpBrowserCapabilities(accessible via the Request.Browser property in ASP.NET 2.0) class that makes a little more sense to you, whatever that might be. So the amount of work I guess really depends on just how complicated your current URI pattern usage is.[UPDATE: I didn't think through this portion of my argument correctly. Its not the difficulty of the parsing the old URI pattern, and instead translating the new, easy to remember pattern that you will be parsing and convering into the old pattern. With this in mind this is even easier, by quite a bit, than I was making it sound. In fact.. well, I won't talk about that quite yet. Just know that much power exists in using the path-styled pattern's of a URI, and this can translate into an easy to understand and implement, yet extremely powerful dynamic query interface into your server system using syntax that conforms directly with the URI and IRI specs and as such can be passed from any browser's location/address bar into your server system and dynamically render the output based on what makes sense to the end user. Bring that same location bar URI/IRI syntax internal (meaning inside the body of the rendered page) and you can quite easily add to this an XForms-influenced (and possibly powered in the not too distant future) intellisense mechanism that validates a location query as its being typed. Hmmm... maybe I shouldn't be telling you just how easy this is... oh well, its already writtent, I'll live with it.) [INSERT: I guess that the last bit kind of makes this next part irrelavent... But given that there is still some relavance I will put a strike-through text-docoration through it instead of deleting it.] The problem with this is that it seems, generally speaking, that the really bad URI patterns are developed by those who are either fairly new to the development world and simply don't know any better(and as such don't have the necessary skills to build a proper handler for their URI patterns), or they're just like this this guy and as such, there's no hope in even trying cuz' the result will more than likely end up worse than when s/he started.
Oh, BTW... For the record, no, its not OK just to catch 404's and Server.Transfer them to the proper server side process. Beyond just being bad form it also forces an extra process for each and every HTTP request as first the 404 has to be triggered and then captured and handled by the custom process. ASP.NET has extensive capabilities to determine what type of HTTP verb and URI request gets handled by what handler. It's EASY, EASY, EASY and all it takes to learn just how easy it is is to read the platform SDK docs or go to MSDN and read one of the MANY online tutorials they have on the subject. I'll even the save you the pain and frustration of having to take your hand off the mouse and move it over to the keyboard to then have to painstakingly write http://msdn.microsoft.com into the address bar to then furthermore have to type a query into the search field to then click enter. Or do you then move your hand back to the mouse so you can click the search button instead...
Probably, huh.
I know your type... and I'm almost tempted to make you go through the painful process described above. But I would rather save you such torture and because of this, wake up tomorrow morning feeling more RESTed than I ever have before.
Sorry, couldn't help myself.
Here's that link. Now go fix your shit before your mother finds out how horrible your URI pattern usage habits are and teaches you a lesson you'll never forget.[1]
And tuck in your shirt damn it, you look like a slob! ;)
Have a good nights REST :)
---(come on, can you blame me?)
[1] : While the first page of the above linked article has a rating of 1 (on a scale from 1-9) only one person has voted and the underlying links have a significantly hire ratings, so don't let that one vote mislead you into believing this is anything close to the trash TDD article from a few weeks back. This series of articles is built upon a technically correct foundation, I promise :)
Posted by m.david at 02:06 AM | Comments (0) | TrackBack
Signs on the Sand: A business case for XSLT 2.0?
Yes, please do!My personal understanding, as opposed to official MS position, is that Microsoft *will* implement XSLT 2.0, the only question is when. The information that Oleg asks for would be very useful to those who want it to be as soon as possible. We have to make the business case to some hard-nosed people who get all sorts of other ideas about how to allocate scarce resources.
For those unaware, Mike Champion now "Owns" all things XML parsing/processing at MS, Which is basically an encoded MS catch phrase for "your a$$ is now on the line for the delivery and ongoing support for all things Good and Bad as they relate to the products you oversee." Fortunately with Mike I think we can take the "Bad" out of that sentence as I think we can safely assume only Good things will become of his efforts. :) But he can't argue the case for XSLT 2.0 support if there's no customer arguments for its support to back him up. Actually, given that its Mike he obviously could argue its case, but with customer use cases in hand it only makes his point that much more powerful... In the end the best arguments are the one that showcase true customer needs and desires, as the customer is always right... even at Microsoft. In fact, ESPECIALLY at Microsoft.
So, with this little additional tidbit of info I'm guessing "Yes, please do!" means a bit more than it did if you were not already aware of this. As a side note:
If you were unaware you might want to consider looking into a Ritalin prescription cuz' you obviously have a problem with paying attention!
Yo RitzBitz, see if you can pay attention for just a little bit longer. Hang in there buddy... we'll get through this together...
So I just checked and the lines are still open at Oleg's place. I have no evidence to support this claim but I've even heard rumor Oleg's handing out door prizes for the first fifty developers and IT decision makers who leave comments, although at this time I have no further comments on this matter and ask that any further questions regarding this be redirected to my lawyer who will be answering all my questions for me from this point forward :D :)
With all of this said, now would obviouisly be as good time to offer your business use case as to why you need/want/would be willing to buy more MS products, if only they had native support for XSLT 2.0 as part of the Framework Class Library. In fact that last one would probably be the most effective "use" case of all -- as in "no XSLT 2.0, no USE in buying any MS .NET supporting products."
Definitely would get the most attention I'm guessing.
Those door prizes are not going to be around forever... hurry! (btw... please see clause above pertaining to this claim. :)
Ready? Set? GOOOOOOOOOO!
Posted by m.david at 03:51 PM | Comments (2) | TrackBack
Passenger killed by air marshals - Yahoo! News
Authorities said he was challenged by two air marshals on board the Orlando-bound plane, and shot on the passenger gangway after running off the aircraft. He ignored demands to put his bag on the ground and instead reached into it, a Department of Homeland Security spokesman said."Shots were fired as the team attempted to subdue the subject," the spokesman said.
The shooting triggered a scramble by air marshals to guard airports across the United States against possible attacks.
But Jim Bauer, special agent in charge of the federal air marshals' Miami office, said investigators found no immediate evidence of a link to terrorism and no sign of a bomb.
A woman who said she was a witness told NBC television's Miami affiliate, WTVJ, that the man's wife had screamed "my husband, my husband," and said he had bipolar disorder and needed medication.
"Her husband ran through the aisle frantically. She ran after him and all of a sudden there were four or five shots," passenger Mary Gardner told the station by telephone.
Federal officials said they could not comment on the allegation that the suspect might have been mentally ill.
Undoubtedly their will be outrage because of this horribly sad and awful incident. However I fear that the outrage will be against the wrong party, namely the United States Government and the policies put in place after and because of the September 11th, 2001 attacks.
As sad of a situation as this is, please remember what took place just over four(4) years ago as both the reason and the need for the system that is now in place that provides those of us that live in the U.S. and abroad the ability(and in many ways, the luxury) to feel assured that when we choose to get on an airplane we can safely assume that we will also be able to get off that airplane alive, healthy, and without trauma.
The "without trauma" portion of these three luxuries is obviously not something the 113 passengers -- individuals who are more than likely innocent victims who were on the plane when this tragedy was taking place, physically and more than likely and specifically visually witnessed at least a portion of the events that transpired, and then forced to exit the plane with the assumption that any one of them could also be a potential terrorist -- will be able to walk away from this with.
But they will be able to walk away.
Posted by m.david at 05:18 AM | Comments (0) | TrackBack
XML.com: Handling Atom Text and Content Constructs
The Atom Syndication Format (RFC 4287) came about in part for social reasons and in part for technical reasons. The social reasons came down to difficulties reconciling factions of existing web feed formats. One of the key technical reasons is that existing web feed formats were not clear and rigorous in specifying rules for and interpretation of embedded content and human-readable text. Atom fixes this deficiency, making things easier for those writing processing code, but it also means you should clearly understand the rules governing such constructs, and, ideally, adopt reusable libraries for the purpose. In this article I discuss the forms of text and content constructs available in Atom, and in recognized extensions, and how to process them.
True to his ever consistent form, Uche Ogbuji has produced Yet Another "It couldn't be that easy... could it?" article that leaves you answering your own question with:
"Huh... who knew."
Well, obviously Uche knew and now... wait, was that a rhetorical question? ;)
Posted by m.david at 03:37 AM | Comments (0) | TrackBack
Signs on the Sand: A business case for XSLT 2.0?
If you are using XSLT and you think that XSLT 2.0 would provide you some real benefits, please drop a line of comment with a short explanation pleeeease. I'm collecting some arguments for XSLT 2.0, some real world scenarios that are hard with XSLT 1.0, some business cases when XSLT 2.0 would provide an additional value. That's really important if we want to have more than a single XSLT 2.0 implementation...
While I have no specific details (I've only "talked" to Oleg briefly today via the comments section of the .NET 2.0/NXSLT 2.0/XSLT 2.0 post from last night) it seems Oleg is on a mission and when Oleg is on a mission you best bet its a mission he plans to accomplish. I have yet to see anything that Oleg puts his mind to turn into anything but something FANTASTIC! So if you would like to be associated with whatever fantastic thing he has going on I would encourage you to visit the above link and answer his call. I know I plan to :)
Posted by m.david at 11:42 PM | Comments (0) | TrackBack
Jonathan Chambers Web Log: Something Real
I'm posting a screenshot of the COM Interop in mono doing something real. The mono runtime is launched through Visual Studio. It runs a simple C# program that creates an Excel application, displays it, and adds a workbook.
---
[via a post from Miguel de Icaza]
---
Obviously having the ability to run a COM-based application is a requirement if you are desirous to interop between a COM-based and .NET-based application(kind of hard to Interop with something you can't "Op"erate in the first place ;). While Wine provides the abilty to run COM-based Windows applications, the support is a bit shoddy. Well, at least the last time I tried using it, which to be fair wasn't exactly yesterday. So I could be completely off with this. I think I can safely state that a Wine-based application is, hmmm.. how should I say this... Fugly(if you have no idea what fugly is, its probably for the best)? ;)
Anyway, so unless I am missing something or am completely off target on my Wine/Shoddy comment(if I am, please let me know) this doesn't offer a whole lot to the Linux and Mac-based Mono users.
However...
I do wonder about the potential of this effort leading to support within Mono for Managed C++ which is what the Phalanger project(PHP compiler for the .NET platform) has stated to be the hold up in providing support for Mono:
Is it possible to use Phalanger under Mono?No, it is currently not possible because some parts of Phalanger are mixed assemblies written in Managed C++, which is not supported in Mono. Although we are planning on rewriting these components to C++/CLI as we switch to FW 2.0, one of them - the Extension Manager - will always contain some native code. So it is likely that Phalanger will run under Mono in the future but without the Extension Manager. However, if Mono supports C++/CLI in the future we would probably port the Extension Manager to Mono.
I realize this is somewhat of a longshot given the fact that providing COM interop support has nothing to do with providing support for Managed C++. But with Mono/COM interop support on Windows you never know who might come along and suddenly take interest in working on such an effort given that Mono now plays nice with 10's of 1000's of COM-based Windows applications, many of which were either written in C++ or implement COM-based components that were written in C++.
Again, a long shot, but with these kinds of things you just never know. Providing COM Interop support isn't exactly going to hurt in finding interest for such things, so again, you really just never know ;)
Either way, you've got to applaud Jonathan Chambers for his efforts... VERY NICE!
Posted by m.david at 10:25 AM | Comments (0) | TrackBack
With as much time as I have and continue to spend around the .NET platform (v1.1 and v2.0) as well as around XSLT(v1.0 and v2.0) it easy for me to make distinctions between what versions of .NET and XSLT other products that implement and/or extend these technologies support. However, it recently occured to me that others who don't spend as much time around these technologies may be a bit confused by what supports what and why things can't be a little less confusing in this regard.
For the record, I thought I would quickly provide clarification as to how all three of the subject line products/specifications relate to one another.
* .NET 2.0 and XSLT 2.0 support
The .NET 2.0 Framework Class Libraries, as of yet, do not contain support for XSLT 2.0. It does seem like this will change, but no official announcements have been made nor have the hints that support is in either in-progress or will be relatively soon contain any sort of date as to when this will become available. At the moment Saxon.NET(one of the projects I develop) and Altova(using as .NET wrapper of their COM-based XSLT 2.0 processor) are the only two products that support XSLT 2.0 transformations inside of a .NET 2.0-based application using C#, VB.NET, or any other language that allows the ability to reference .NET 1.1 or 2.0 assemblies within the confines of its implementation.
* XSLT 2.0 and NXSLT 2.0
With this in mind, at present time NXSLT 2.0, which has a primary focus towards enabling .NET 2.0-based XSL-Transformations via the command line, does not support much of the XSLT 2.0-based features. However, Oleg has gone to great length to begin to bring several XSLT 2.0 features, such as support for multiple output, within the confines of this fantastic tool. While I would hate to suggest that there is any downside to this(how could you possibly complain when someone provides more features than are currently available... FOR FREE!!!) there is a possibilty that because of the one letter difference between the two names [XSLT 2.0 | NXSLT 2.0], those who do not spend their life eating, breathing, and from every conceivable angle, obsessing themselves with the .NET platform and XSLT 1.0/2.0, may find themselves a bit confused by the one letter that seperates these two from being equal.
NOTE: I suddenly just realized that it would be a REALLY good idea for me to contact Oleg and discuss the possibility of integration support for Saxon.NET into his NXSLT 2.0 command line tool. Beyond the fact that it would be REALLY COOL, this would also help alleviate the potential confusion by providing native support for the XSLT 2.0-Basic spec. While I have enough experience with these kinds of things to know that things are not always as easy as they might sound, it would seem to me that a quick check of the version(the namespace stays the same and as such can not be used to determine what version of XSLT is contained within) contained in the xsl:stylesheet element[1] should do the trick. The other possibility would be to create a command line switch if theres no way to check the version without causing a slow down in the processing. Why would this slow things down? Well, to check the version you would have to load the stylesheet into an XMLDocument-based type -- Its possible that the new XslCompiledTransform class might expose this information, but then again given that as a stylesheet is being loaded(at least I assume this to be the case... Looks like Mr. Lutz Reoder will be paid a visit here in a sec to verify this ;) it checks to see whether or not the version identifier is something it understands, and if not, it should throw an exception and as such that information wouldn't be avaialable given that the stylesheet never finished loading in the first place -- or wait -- maybe thats how you would do it -- catch the exception and try loading it into a Saxon.NET XMLDocument type -- hmmm... that should work...
Well, anyway(sorry for the "walk in the park with my thought process" interlude there... ;), I think an email to Oleg is in due order... If something becomes of this I will let you know.
Enjoy your "NXSLT 2.0 with XSLT 1.0, EXSLT, and some extended XSLT 2.0-like support" enhanced day!
---
[1] : or the xsl:transform element which is once again a part of XSLT via the 2.0 spec and can be used as a synonym for xsl:stylesheet -- if for no other reason(and there are LOTS of other reasons)... THANK YOU Dr. Kay and W3C XSLT working group for this one WONDERFUL reinclusion into the spec :)
Posted by m.david at 06:28 AM | Comments (2) | TrackBack
As I write this down, I'm astonished all over again—but it's true. The poet's house is wonderful, the neighborhood is Arcadian, and the rent is comparable to what we would have paid for the stinky-rug place. And yes, James Kennedy in California—a heroic personage I may never meet—has paid our entire rent in advance. The check arrived by FedEx and has already cleared.
Posted by m.david at 05:32 AM | Comments (0) | TrackBack
Unknown Borneo beast caught on camera - Science - MSNBC.com

I am just getting my "day" started (my current daily schedule is a bit off my typical GMT-based schedule) and running through email and quickly catching up on the daily events via various news sites and blogs. I ran across the above linked article article on MSNBC which contained the above photo and starts off with:
GENEVA - Environmental researchers are preparing to capture what they call a new, mysterious species of carnivore on Borneo, the first such discovery on the wildlife-rich Indonesian island in more than a century. The Swiss-based environmental group WWF said on Monday that its researchers photographed the strange animal, which looks like a cross between a cat and a fox, in the dense, central mountainous rainforests of Borneo. “This could be the first time in more than a century that a new carnivore has been discovered on the island,” the WWF said in a statement.
Wow! Definitely helps drive home the point that even living in the most technologically advanced society/age this planet has known(at least, as far as we know anyway) there's a whole world out there that we don't(or didn't as is the case with the discovery of this new species) even know exists.
Note to self: The next time you're tempted to use the phrase "Final Frontier", don't.
Posted by m.david at 02:21 AM | Comments (0) | TrackBack
In quick perusal of XSL-List I noticed this announcement from Oleg. nxslt is Oleg's command line tool for invoking .NET-based XSL-Transformations. While already an extremely useful and necessary tool for .NET developers in whom prefer to test the transformation files from the command line, or who need a robust tool for integration into their favorite text editor, this release brings support for .NET 2.0-based transformations utilizing the new XslCompiledTransform class which is EXTREMELY fast (comparable to MSXSL) as well as a list of features that move the nxslt utility from "MUST HAVE" status to "ABSOLUTEY MANDATORY!"(a phrase that would make for a much more entertaining spec development process and subsequent reading of that spec, I might add ;)
Thanks Oleg!
Oleg's announcement to XSL-List earlier today is below:
nxslt v2.0 (aka nxslt2) is available for download. This is first nxslt
release for .NET 2.0.
nxslt is a free feature-rich command line utility that allows to perform
XSL Transformations (XSLT) using .NET Framework 2.0 XSLT implementation
- System.Xml.Xsl.XslCompiledTransform class. nxslt is compatible with
Microsoft's MSXSL.EXE tool and additionally supports XInclude 1.0, 70+
EXSLT and EXSLT.NET extension functions, multioutput, embedded
stylesheets, custom XmlResolvers and custom extension functions, pretty
printing etc etc etc.
nxslt2 documentation -
http://www.xmllab.net/Products/nxslt2/tabid/73/Default.aspx
Download nxslt2 - http://www.xmllab.net/Downloads/tabid/61/Default.aspx
nxslt is a free open source tool, subject to the BSD license and is
distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
express or implied. You can use it for any commercial or noncommercial
purposes, including distributing derivative works.
Enjoy!
--
Oleg Tkachenko
http://www.XmlLab.Net | http://www.XLinq.Net | http://blog.tkachenko.com
Posted by m.david at 04:24 AM | Comments (0) | TrackBack
Wikipedia Tightens Submission Rules - Yahoo! News
According to Eugene Volokh, described as a specialist in the First Amendment, not a whole lot.
"I sympathize with this person, but it's really not any different than a posting on an anonymous Web page," Eugene Volokh, a law professor specializing in the First Amendment, said, referring to Seigenthaler. Volokh added that Wikipedia provides casual readers with a valuable service but that he would never rely on it as a source for scholarly articles."
Huh. Interesting. Complete trash, but none-the-less interesting.
How so?
It seems to me that Mr. Volokh doesn't realize that Wikipedia has a many>>>to-one relationship in which the 'many' amounts to potentially millions who will access and read the content posted on any particular topic. Compare that to a random anonymous blog posting or article published to a web site attributed to anonymous in which, while still a many to one relationship, unless it happens to be a heavily visited web site (such as, for example, Wikipedia) the potential reach is but a fraction of the reach of a Wikipedia article.
Add to this the fact that Wikipedia is, generally speaking, regarded as a reliable source for information on any particular topic. Compare this to your average no-name blog (no-name given the fact that the post is assumed to be anonymous) or your typical e-mag in which will print anonymous letters from time to time in which even the best of these sites(e.g. Slate) will post opinion-based posts in which get destroyed by follow-up comments and trackbacks that quickly discredit the post as complete trash. As such, these same posts can easily be disregarded by any given visitor as random fluff from someone who is not even willing to back up their comments with their name. Sometimes this is necessary (e.g. MiniMsft) and if the post is of high quality(or, as minimsft tends to be, all of the posts are of high quality) then the anonymous portion of the post is much easier to be viewed in a positive light. In fact it can often bring even more credit to the content as the "if they're anonymous, it must be for good, conspiracy-theory-type reasons" (e.g Deep Throat) can come into play and create a legend out of the anonymous poster practically over night.
But if this is the kind of "legal analysis" questionable Wikipedia content continues to receive you can bet your blue suede shoes it won't be long before a major lawsuit is brought against such content, putting the folks at MediaWiki in a pretty tough spot that I doubt even an extremely successful fund-drive would be able to continually support.
That would suck!
But unless sufficient disclaimers and more strict policies are put in place as to who can post content, disallowing anonymous posts all-together, this may very well be the exact scenario that brings the demise of one of the most interesting and informative sites on the web.
Question: At what point does anonymity on the web become too great a liability for any reputable/respected web site to continue forward with in any sort of capacity?
I don't know the answer, but my guess is that someone out there does.
Anybody?
Posted by m.david at 12:46 AM | Comments (0) | TrackBack
A List Apart: Articles: Printing a Book with CSS: Boom!
HTML and CSS, two of our favorite acronyms, are normally associated with web pages. And deservedly so: HTML is the dominant document format on the web and CSS is used to style most HTML pages. But, are they suitable for off-screen use? Can CSS be used for serious print jobs? To find out, we decided to take the ultimate challenge: to produce the next edition of our book directly from HTML and CSS files. In this article we sketch our solution and quote from the style sheet used. Towards the end we describe the book microformat (boom!) we developed in the process.
An interesting article from Bert Bos and Håkon Wium Lie thats definitely worth a read.
Posted by m.david at 09:26 PM | Comments (0) | TrackBack
As I made obvious in my "Top Five(5) Reasons Darcs Kicks A$$" post from a while back, I have become quite fond of darcs as a revision control system. As of late I have been learning more about the monotone project and am REALLY diggin' what I am seeing(note: while the name is obviously similar, as far as I know there is no direct connection between monotone and Novells/Ximian's Mono project nor is the project built on top of any runtime implementation of the CLI (from what I understand it's built using Lua.)
But with as much potential as I think both of these projects have, beyond CVS, Subversion, its successor, is by far and beyond the most likely revision control system to be installed on a developers workstation and given its CVS roots its usage is more likely to be understood by this same group.
With this in mind it seems to make a lot of sense to make SVN the primary project source control system for projects which have a broad scope of potential users. I am working on just such a project in my spare time and have recently been wrestling with getting the combination of Win2K3 + Cygwin + SVNServe working well together. While there is very nice little SVN Service wrapper for Windows-based systems, if you are running Cygwin and plan to use the instance of Subversion that is prepackaged and ready to be installed as part of the Cygwin setup process, while there may be a way to get the two(SVN Service wrapper and Cygwin Subversion instance) to play well with each other, I couldn't figure out how.
One of the MANY nice features of Cygwin is the ability to install a Cygwin executable(such as svnserve.exe) as a Windows service using cygrunsrv.exe as a proxy to communicate between Windows and Cygwin. I found a nice reference that helped quite a bit. But if you want to take advantage of the Unix/Linux-styled directory structure and reference syntax (e.g. /srv/www/htdocs) coupled with OpenSSH(another tutorial that I need to write to help the rest of you from wanting to pull out your hair if dealing with installing Cygwin + OpenSSH or any of the various OpenSSH/Cygwin-mini installations that are available) intalled on an Internet-based server as opposed to your companies Intranet then there are some modifications to the above linked reference that need to be made to make things work. Please note: you will need to replace all entries contained in square brackets, e.g. [servername], with the proper information for your own installation minus the square brackets. Also, this is pretty much a straight copy-and-paste from the above linked reference with the proper modifications to get this to work as outlined above.
Use cygrunsrv to install svnserve.exe as a service
I ran this from a cygwin shell window
cygrunsrv \
--install SvnServe \
--chdir [C:\\cygwin\\srv\\repository\\svn\\reponame] \
--path [C:\\cygwin\\bin\\svnserve.exe] \
--args "--foreground --daemon --root=[/srv/repository/svn/reponame] --listen-host [nameofhost.com]" \
--desc "Subversion for [whatever you want to call this instance]" \
--neverexits
Run the Services app and manually start SvnServe the first time.
It should be set to autostart in the future.
From another workstation I ran this to see that the service
was running.
svn list svn://[ServerName.com]/
Hope you find this information helpful!
Posted by m.david at 05:19 AM | Comments (0) | TrackBack
A conondrum about agile development and Visual Studio
In attempting to post a comment pointing them to my follow-up "come clean" post I have received several "Invalid Human Proof" errors when entering the so called Human Proof series of letters and numbers that should prove whether I am a human or a comment-spam bot. With 20/13 vision I somehow doubt that my interpretation of the sequence is so far off that after three tries I still can't seem to get it right.
I need to re-read this article several times. So far I think I do not agree entirely on these views, take a look at it and judge by yourself
Lets see if a trackback works:
Please see my follow-up piece that helps clarify the reasons behind taking such an obvious and blatantly innaccurate stance against OOP being agile > http://www.xsltblog.com/archives/2005/11/followup_to_oop_1.html <
Posted by m.david at 10:36 PM | Comments (0) | TrackBack

Featured Event Dec 01 2005, WorldwideWorld AIDS Day
Stop AIDS: Keep the PromiseWorld AIDS Day is a yearly, global event started in January 1988 to promote awareness and action in the fight against HIV/AIDS. According to UNAIDS estimates, there were 37.2 million adults and 2.2 million children worldwide living with HIV at the end of 2004. During the year 4.9 million people became newly infected with the virus. Around half of all people who become infected with HIV do so before they are 25 and are killed by AIDS before they are 35. Around 95% of people with HIV/AIDS live in developing nations. But HIV today is a threat to men, women and children on all continents around the world. In Africa alone, more than 17 million people have died from AIDS and another 25 million are infected with the HIV virus, approximately 1.9 million of whom are children. Every day in Africa, HIV/AIDS kills 6,300 people. 8,500 people are infected with the HIV virus and 1,400 newborn babies are infected during childbirth.
Posted by m.david at 09:22 PM | Comments (0) | TrackBack