I picked up a refferer from the MSDN magazine internal site sometime in the last 24 hours, so I’m guessing the article will be posted tomorrow. I’ve been saying for months that Feb ’03 was going to be big with my first child and, much less important, my first published article. Now it appears child and article will both be “publicly available” the same day. My wife Julie is going to be induced first thing tomorrow. Funny how these things work out.
What does Teredo stand for?
But what makes [threedegrees] interesting from a tech standpoint is the technology bets that are involved. The groups are built on the Microsoft peer to peer platform, which is ipv6 only. The IPv6 part means that NATs are a deployment blocker, so enterteredo. [Doubt’s log]
I just noticed this yesterday as well. Very cool stuff. I didn’t realize that XP SP1 includes a production quality IPv6 stack (though it’s still appears as “developer preview” in the UI) and Windows Server 2003 takes that support to the next level. Plus .NET Framework 1.1 includes support for IPv6. Terendo seems pretty cool (traffic IPv6 over IPv4 and bypass NAT issues). However, how much does Teredo (sometimes called Shipworm) rely on UPnP support? The slides Doubt linked to claims that it works for “all NAT”, but it also discusses UPnP in depth. I’ve turned off UPnP support on all my machines inside my Linksys NAT, not because of the security issue but because my NAT doesn’t behave when it’s turned on. I have to routinely reset the NAT when UPnP support is turned on. I’ve updated to the latest firmware, but I’m still having the problem.
Thoughts on Iraq
In September, President Bush claimed the UN runs the risk of becoming irrelevant if it fails to act. Today, Condoleezza Rice claimed that the UN Security Council is “getting a history of being unable to react“. But in the face worldwide protests, many of which are targeted not at America but directly at Bush and his Administration, I can’t help but wonder about the risks the US is taking and how history will view Bush. I found Senator Robert Byrd’s speech [from KeithBa’s Blog] put my thoughts and feelings into words. It’s amazing the damage that has been done to this great nation in such a short time but such a short-sighted President. I agree with David Weller regarding Hussein’s need for an ass-kicking, but that’s not for the US alone to decide.
What does it say about Bush that he claims that Iraq is in “material breach” of UN Security Council resolutions (which they are, IMO), but is willing to go to war with Iraq without the sanction of that very organization?
.NET Links
Added two new .NET links: Patterns & Practices and NUnit Addin. Patterns & Practices slogan is “proven practices for predictable results”. They include documentation on Reference Architectures, Operational Practices, and Building Blocks. While there are some greatonesuptherealready, look for more in April to coincide with the VS.NET 2003 release. NUnit Addin integrates the popular NUnit .NET port of the xUnit testing framework directly into VS.NET for “point and test” capability. I’ve already given Jamie my #1 enhancement request – automatic test execution on every build. I’ve also had a look at the code and I would highly recommend any add-in developer take a look. Jamie’s add-in framework is very impressive. I hacked in a sample implementation of auto test execution very quickly because his code is so nicely factored.
Rotor’s XSD.exe
Among the other coolness of Rotor, it includes an implementation of the XML Schema Definition tool (XSD.exe) from the .NET SDK. It’s somewhat limited compared to the production version (no support for generating DataSets, schema inference, XDR or Visual Basic) but it does provide the primary goal of generating classes from XSD and generating XSD from classes. Spelunking around just the build process of Rotor’s XSD.exe yielded interesting discoveries.
- The Rotor build process uses the C++ compiler to generate AssemblyAttributes.cs and AssemblyRefs.cs. AssemblyAttributes has all the assembly level attributes (similar to the AssemblyInfo file that is generated by all the VS.NET project wizards). AsseblyRefs has a class named ThisAssembly with much of the same info available programmatically plus a variety of other assembly reference strings and public key information. The C++ compiler is being used as a preprocessor to insert concrete values into a generic files (AssemblyAttributes.cspp and AssemblyRefs.cspp in the ssclirotorenvbin directory).
- There’s a really useful perl script named gensr in the ssclirotorenvbin directory. It reads a text resource file and creates string constants for every resource name. It also provides useful utility methods including type-safe and culture aware GetBoolean, GetChar, GetByte, GetShort, GetInt, GetLong, GetFloat and GetDouble. It also overloads GetString to support format strings (like string.Format).
I haven’t done much with localization, but I should, so the discovery of the gensr script is particularly useful for me. Of course, I want a compiled utility version of it. 😄 The question is rewrite in C# or use the ActiveState Perl Dev Kit which includes their PerlNET compiler. I’ll probably go C# due to my severe lack of perl skills. In the meantime, I used Perl2exe. Works OK, except that the resulting exe is almost 700kb while the original script is 9kb. That’s a lot of bloat, but I guess that’s the price of convenience.