# Monday, 28 March 2005
Steve Maine’s posted a very well-written article about using duplex contracts in Indigo.  I’ve just started doing some Indigo prototyping, so any good introductory material is welcome.  It’s cool to see that they’ve come up with an obvious way to deal with two way web services conversations.
Monday, 28 March 2005 14:49:28 (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
Of all the artists I thought I’d never hear of again, Billy Idol was towards the top of the list.  He’s got a new album out called Devil’s Playground, and it’s actually pretty darn good if you like that sort of thing (and I do).  Check it out if you get a chance.  It’s on Rhapsody
Monday, 28 March 2005 11:05:14 (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 

I upgraded to the latest 1.7 release of dasBlog CE this weekend, and it couldn’t have gone more smoothly.  I didn’t have any problems, and everything seems to be working just fine. 

Kudos to Scott, Omar and the other contributors.

Monday, 28 March 2005 10:35:03 (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 

I love to see technology being put to uses that actually make our lives better, so I was pretty tickled by the Fox Blocker.  It’s a little inline band-pass filter that you can screw into a cable TV line that blocks the signal for Fox News. 

Simple technology that makes our lives better.

[via Engadget]

Monday, 28 March 2005 10:01:27 (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [4]  | 
# Tuesday, 22 March 2005
Travis presents some hints for understanding the Hanselman
Tuesday, 22 March 2005 15:42:44 (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
I decided that KE7BJG was just too hard to say over the radio, so I decided to do something about it.  The FCC has granted my humble petition ($20.80 later) and I am now KE7PDC.  So take note, those 1–2 of you who took note in the first place. :-)
Tuesday, 22 March 2005 09:31:54 (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [1]  | 
# Thursday, 17 March 2005

Here we are in the year 2005.  XML has been pretty ubiquitous for at least 5–6 years now.  Namespaces have been in use for pretty much all of that time.  And yet they remain possibly the least understood part of average, everyday XML processing. 

The bottom line is that pretty much any XML parser worth its salt these days supports the namespaces spec.  Which means that

<MyElement/>

is absolutely not the same thing as

<MyElement xmlns=”urn:runforthehills”/>

Furthermore, in line with the XML Namespaces spec, an application which is expecting the latter, namespace qualified element should not and must not process the former, unqualified element.

The XmlSerializer that we all know and love in .NET is particularly sensitive to this issue (as well it should be).  As far as the serializer is concerned, everything should be namespace qualified.  The way this commonly bites people is thus: a customer/partner sends you a schema representing the XML documents they are going to be sending you.  In the schema, the targetNamespace attribute is set with a value of “http://partner.com/schema”.  When you actually do to debug the application however, it turns out they are sending you totally unqualified XML.  Nothing will work.  There are a few pretty horrible things you can do with the XmlSerializer to try and convince it not to be such a stickler about things, most involving the XmlRootAttribute and XmlAttributeOverrides.  I can share those ways if anyone really wants to see them.  Probably best to keep them under cover.  However, that’s only likely to work if your XML document is flat, meaning that the root element only has one level of child nodes under it.  Otherwise, if you use Xsd.exe to generate your serialization class, each set of sub elements get put in their own object, which will also be namespace qualified.  And you’re back to square one. 

The right solution of course is to get your partner to send you XML that’s actually correct, but often that’s just not possible for a variety of reasons with which I’m sure we’re all familiar.  As a last ditch effort, you can pre-process the XML text before passing it to the XmlSerializer, and inject the right namespace strings.  Yucky, it’s true, but it does actually get the job done.  You will of course, be paying some overhead costs of string processing and possibly parsing the XML twice.  But what can you do?

The other thing to keep in mind is how namespaces play out in XSD schema files.  You can only have one target namespace per schema, so anything you define in that schema file will be in that target namespace.  You can import things from other namespaces, but not from the target namespace.  You can, however, define two different schema files that use the same namespace, then import them both into another schema, as long as there are no name collisions.  If you omit the targetNamespace attribute from your schema, the targetNamespace becomes “”, meaning you are defining the schema for an unqualified XML document. 

Confusing enough?  Read the namespace spec (it’s really short), familiarize yourself with how namespaces work in schema, if you see errors coming back from the XmlSerializer that look like

The element <spam xmlns=””> was not expected.

check your namespaces!  That means you are trying to deserialize an unqualified document, when a qualified one was expected.

Thursday, 17 March 2005 13:00:03 (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
Scott and Rory have another funny TechEd video up.  This one’s funny even if you don't know them. :-)
Thursday, 17 March 2005 09:45:38 (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, 10 March 2005

…and good riddance. 

I was talking with Scott and some others at lunch today about the announcement that support is ending for VB6, and the ensuing petition.

OK, I understand that switching to VB.NET (or C#) will be fraught with pain, uncertainty and chaos. 

Get over it.  Cowboy up, people.  COM is dead (long live COM).

The bus is leaving… 

Thursday, 10 March 2005 16:05:06 (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [1]  | 
I’ve had my Amateur Radio license for 8 months or so now, and haven’t spent too much time talking on it.  But…  Just recently I’ve discovered the groovy world of IRLP, or the Internet Radio Linking Protocol.  Me talking to a radio in Portland, which is connected via VoIP links to one or more other radios around the world that other people are talking to.  Pretty cool.  You can talk to people all over the world with just a handheld radio and a Technician license.  I made my first “long” distance contact last night, chatting with W2SBI in Virginia.  It’s a pretty strange juxtaposition of old and new technology, but hey, it works.  You can listen in to one of the IRLP reflectors from the web site.
Thursday, 10 March 2005 15:58:42 (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 

I’ve spent the last couple of days trying to get some ham radio related (yes, I’m that big a nerd) software to run on an old laptop I have at home.  I figured, being such an old and limited little machine, I’ll run Linux, since it will be small, light and agile on such hardware.  As ever, the Linux install itself went very smoothly (Debian 3.0).  I spent three solid days installing Linux back in like ‘93, so I appreciate how far installing has come.  It’s what happens after that.  I know I write code for a living, but I’ve discovered that when I get home, it’s not really what I want to do.  And the unfortunate truth of Linux (for me at least) is that everything that doesn’t come with your distro is next to impossible to run.  I just don’t have the patience to compile every piece of software that I want to use, especially since whatever libraries it depends on are NEVER the ones that I have. 

Sigh.  I know deep in my heart that Linux is cool.  I just don’t have that kind of time. 

As sad as it is, I gave up and installed the copy of 98 SE that came with the box.  And it just works.  Not nearly as flashy (Gnome is way cooler, hands down) but a solid performer.  Of course it took two days and several sets of drivers to get my D-Link WiFi card to work, but that’s a different story. :-)

Thursday, 10 March 2005 14:05:44 (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [2]  |