Issues with download / installation of Atlas December bits

Apparently there are some issues with getting the correct Microsoft.Web.Atlas.dll and other annoyances when downloading the December bits. Jonathan Hawkings has a good summary of what to do on the ASP.NET forums, and I reproduce it here:

It looks like there is a replication issue with the ASP.NET ‘Atlas’ December ’05 release family on MS Download Center (download.microsoft.com). The December bits were originally released with the October release family (a download center deployment term) and they suspect this lead to the October bits continuing to be downloaded. The download center folks have since re-release the ‘Atlas’ December bits with a new release family.

Please try the steps below to clear our prior ‘Atlas’ versions from the IE cache, VS project templates etc.

1. Make sure you are running ASP.NET 2.0 RTM, Visual Studio 2005 RTM or Visual Web Developer RTM … ASP.NET ‘Atlas’ will only run on the RTM releases. Beta2 will not work. If you don’t have a 2005 RTM release you can download the RTM release of Visual Web Developer from http://msdn.microsoft.com/vstudio/express/vwd/download/. Uninstall prior beta 2005 releases.

Verify your version numbers by choose Help -> About in Visual Studio 2005 / VWD

Microsoft Visual Studio 20005 8.0.50727.42

Microsoft .NET Framework 2.0.50727

Close Visual Studio / Visual Web Developer

2. Clear out your Internet Explorer cache

Internet Explorer -> Tools -> Internet Options -> Delete Files

Close Internet Explorer

3. Delete older releases of the ASP.NET ‘Atlas’ VSIs

Zip files

C:\Documents and Settings\username\My Documents\Visual Studio 2005\Templates\ProjectTemplates\Visual Web Developer\CSharp\ASPNETAtlasWebApplicationCS.zip
C:\Documents and Settings\username\My Documents\Visual Studio 2005\Templates\ProjectTemplates\Visual Web Developer\VisualBasic\ASPNETAtlasWebApplicationVB.zip


C:\Documents and Settings\username\Application Data\Microsoft\VisualStudio\8.0\ProjectTemplatesCache\Visual Web Developer\CSharp\ASPNETAtlasWebApplicationCS.zip
C:\Documents and Settings\username\Application Data\Microsoft\VisualStudio\8.0\ProjectTemplatesCache\Visual Web Developer\VisualBasic\ASPNETAtlasWebApplicationVB.zip

4. Start Internet Explorer and download the December VSI

a. Navigate to http://atlas.asp.net/ (which redirects to http://www.asp.net/default.aspx?tabindex=7&tabid=47)

b. Click the link “Atlas Blank Project VSI (December release)”

c. Click the link “VSI file for creating a blank ASP.NET "Atlas" Web site”

d. Click the link “I Accept” (the link should point to cfab4430-426d-4a04-954b-1acbf852e800/ASPNETAtlas.vsi )

e. Choose “Open”, Next, Finish, Close to install the December VSI

5. Start Visual Studio 2005 / Visual Web Developer 2005 and create a new ‘Atlas’ Web site

a. File -> New Web Site -> ASP.NET ‘Atlas’ Web Site

b. The Readme.txt should contain “Date: 12/19/2005” which is December 19, 2005.

6. Read the ASP.NET ‘Atlas’ Technology Preview December 2005 release summary change list at:

a. Navigate to http://weblogs.asp.net/atlas/archive/2005/12/22/433869.aspx


Managed Code Speed vs UnManaged - and Rudolph.

Richard Grimes has a very recent piece here about comparisons between managed and unmanaged code.

He points out specifically: "The problem is that when most people think of .NET they think of other frameworks with a runtime, like Java or Visual Basic; or they may even think about interpreters. They do not think about applications, or what they do; they do not think about limiting factors like network or disk access; in short, they do not think.
.NET is not like those frameworks. It has been well though out and Microsoft has put a lot of effort in making it work well. In this article I will present some code that performs some computationally intensive operation and I will compile it as both managed C++ and unmanaged C++. Then I will measure how each of these libraries perform. As you will see, .NET is not automatically much slower than unmanaged code, indeed, in some cases it is much faster."

Grimes presents FFT (Fast Fourier Transform) sample code for Unmanaged, Managed C++, C++/CLI and C# Managed along with the respective high-performance timings. (I found it amusing looking at this because I wrote custom FFT code in Turbo Basic for my Ph.D. dissertation back in 1990!) . Grimes provides all the sample code in downloadable form.

The bottom line is that the results for C# code showed that there is little difference between C# and managed C++ in terms of performance. Indeed, the optimized C# library was actually slightly faster than the optimized managed C++ libraries.

You have to be very careful about the uninformed who are in a position of authority. They even populate the newsgroups. Who knows? One of them might even be your boss....

Only Rudolph the Red Nosed Reindeer really knows everything, and, wisely, he has nothing to say.


SOA? Hey! How 'bout it? and Service Packs Too.

The world is abuzz with acronyms. One that's getting a bit overheated IMO is Service Oriented Architecture -- "SOA".

Why is it that architect - developer people get into this "Baffle 'em with Bullshit" mindset anyway? Let's keep it simple, folks! What is "SOA" anyway?

I prefer the simple definition:

"A service-oriented architecture is a collection of services that communicate with each other. The services are self-contained and do not depend on the context or state of the other service. They work within a distributed systems architecture."

Now that's pretty simple; it doesn't baffle us with high-falutin whitepaper B.S., and we feel better since most of us are already doing this kind of stuff anyway.

Note that it doesn't say "whose" system, or "what brand" or even what language / platform. SOA has been around for 20 years. The only real difference is that we have more interoperability in the form of XML / SOAP, that's why the buzzword. It seems these days that anything that uses SOAP / XML/ loosely-connected anything (even if it just "says" it uses it but doesn't even really do so) gets to be knighted as the latest "AJAX". (Actually I suggested "AHAB" - A lotta Hype And Bullshit.)

First we had the Gartner Gurus touting this stuff all over the place charging customers to advise them on this next "big software strategy". Then the Microsoft Maharishis got ahold of it and found themselves a new Mantra. They said that the "A" in SOA shouldn't be there, because it wasn't about "Architecture". Now they are happy with the "A" and they've got a new mantra, but it's still the same Whitepaper B.S.

The first service-oriented architecture for many Windows platform developers in the past was with the use of DCOM.

You guys need to climb down off those ivory towers and just get down to the basics that any of us with average intelligence can easily understand. When it gets to start sounding like some sort of new "religion", and there are more whitepapers on it than there are code samples, you know you've gone too far. I got one for ya:

Service Architecture Networked To Administrivia

"Things should be made as simple as possible, but no simpler." -- Albert Einstein

Einstein, a German immigrant who didn't even speak English as his native language, did a pretty good job of keeping it simple for the "folks".

On a slightly different note, I read Scott Wiltamuth's post about the upcoming Service Packs for VS.NET 2003 and VS.NET 2005. The post itself is short and basically just informational. What's revealing is the list of comments! Besides the usual anti-MS drivel, there are some very interesting suggestions and ideas. Interestingly, I didn't see a single response to any of the long list of comments by Mr. Wiltamuth.

Hope you guys are listening out there in Redmond.


Intelligent. But, by Design?

A couple of people had an interesting conversation today. It went something like so:

A: If a theory is presented as a theory, what is the harm in teaching it? The "theory" of evolution is taught. How is teaching Christian kids the theory of evolution ok but teaching the theory of intelligent design to non christian kids not ok?

B: The theory of evolution is based on science. Einstein's theory of relativity was based on science, even though it took 51 years for it to be fully proven.
Intelligent design is not based on science, it's based on the supernatural, which is not science, but religion. Astrology is based on the supernatural, not science.
I'll defend Christian kids' right to learn about Intelligent design in church 100%, but not in the public school biology classroom.

A: I went and read up on that case. They weren't simply asking to teach it in addition to Darwin, they wanted it to be a replacement for. It also appeared to be against a vast majority of the parents in that district.

Certainly don't think that is a good idea. That said, if the school district and the parents wanted both taught as "theories" and not as scientific law, they should be allowed to do so. Nothing wrong with Darwin believes x and uses y to support his theory, some Christians believe a and use b to support their theory, Hindus believe e and use f to support their theory. And so on...

Just gives kids an awareness of these types of things...Presentation would, of course, be the key which could be an opportunity for abuse just like anything else.

B: Think I understand your point quite well. Here is the problem as I see it:

Conflict between science and religion began well before Charles Darwin published Origin of the Species.

Evolution is not considered to be inconsistent with the religious beliefs of most Christians or Jews. Most mainline Protestant denominations, the Catholic Church, and many other religious faiths accept the teaching of evolution. The Pope even accepts the view of evolution! Religious theorists since St. Augustine espoused the separation of Church and State, which is written into our Constitution.

Intelligent Design is not a scientific theory, which if it were, would allow it to be taught in the public schools alongside Evolution theory, which is based on science. Intelligent design, in my view, is basically somebody doing a global "Search and replace" on the word Creationism with the phrase "Intelligent Design". If ID were permitted to be taught in the public schools, contrary to our Federal Law, this is what would happen:

People like me would come in and say, "School Board? I am writing you after having read of your hearing to decide whether the alternative theory of Intelligent Design should be taught along with the theory of Evolution. We can all agree that it is important for students to hear multiple viewpoints so they can choose for themselves the theory that makes the most sense to them. I am concerned, however, that students will only hear one theory of Intelligent Design.

Let us remember that there are multiple theories of Intelligent Design. I and many others around the world are of the strong belief that the universe was created by a Flying Spaghetti Monster. It was He who created all that we see and all that we feel. We feel strongly that the overwhelming scientific evidence pointing towards evolutionary processes is nothing but a coincidence, put in place by Him.

It is for this reason that I'm writing you today, to formally request that this alternative theory be taught in your schools, along with the other two theories. In fact, if you do not agree to do this, we will be forced to proceed with legal action. I'm sure you see where we are coming from. If the Intelligent Design theory is not based on faith, but instead another scientific theory, as is claimed, then you must also allow our theory to be taught, as it is also based on science."

You get the picture? We open up the public school system to this kind of motive, and it all goes to "Hell in a legal handbasket" pretty quickly.

It is so easy to be misled or even "preached" into the inane belief that what you are doing is "right", rather than independently thinking carefully about it first. Maybe Judge Jones did us all a favor with his 139 page decision and assertion that several Board members had repeatedly lied to cover their motives even while professing religious beliefs. There's nothing wrong with teaching the Intelligent Design Theory, the Flying Spaghetti Monster or the Creationism theory to your kids, if that's what you believe. Just do it in Church or Synagogue where it belongs.

Teach your kids to understand that religion and science are complementary, but different, and both of them are important in order to develop a good perspective and an adult mind as you grow up. Just understand why they are different and should not be mixed. A lot of blood was spilled in Europe over conflicts between science and religion before our forefathers came here and decided, among other good things, to put a stop to it.

Oh, and, by the way: Judge Jones was appointed to the bench by George Bush.

Who's got the Balls? NYC Transit strike off to a bad start.

I grew up in NYC. It's a tough town. Tough people, but they can also be very nice.

One good thing I learned in NY is how to drive. You stick your nose out into traffic until somebody chickens out. Problem is, here in Florida they don't get that this is just etiquette, and they shoot you, or at least try to run you off the road! Idiots!

Now look, transit strikes are illegal. In New York State, they have the Taylor Law, which unequivocally makes public transit strikes illegal.

The City of New York went and got a court injunction against the union, barring them from going on strike. A judge fined them a million a day. And yet, after all this, Roger Toussaint, the president of the Transit Workers Union, had the unmitigated gall to stand up at a rally and yell to the crowd, "If Mayor Bloomberg wants to know what we think about this lawsuit, I'll show you," and he tore up the legal papers in front of them.

If the Transit Workers Union defies a court injunction, breaks the law, and goes out on strike anyway, they need to GET FIRED, dood!

Ronald Reagan did this in 1981 to the air traffic controllers, and that worked out just fine. The air traffic controllers had gone out on an illegal strike, and Reagan gave them 48 hours to get back to work or be fired. Many of them thought Reagan was bluffing, and they found out the hard way he wasn't. But, Ronald Reagan had Real Balls. Michael Bloomberg is just a pussy.

It's a lot harder to replace an air traffic controller than it is to replace a subway operator. Why can't Michael Bloomberg summon up the BALLS to fire the illegally striking transit workers in 2005? Why? Because he's a PUSSY.

He should have fired them immediately, and not even given them an option of coming back to work. But, he screwed up.

Anybody with an above room - temperature IQ could figure this game out. Bloomberg, you lost pal!


Visual Studio 2005 Web Application Project Preview Available

Scott Guthrie has posted a mini-site with a download of the new Web Application Project "add-in" (the one that makes VS.NET 2005 act like VS.NET 2003 for ASP.NET Applications).
The site is here..

At this point there is a C# Tutorial ready (link on the same page as above) and a VB.NET tutorial should be ready shortly.

I'm going to spend a short amount of time on this and post some more, because I think it is an important step, er (forward?, or perhaps backward?).

Scott informs on his blog that "This preview is not a feature-complete version of the functionality. There are several important features that are not yet implemented, as well as a set of bugs that are currently active", and that "Our goal with putting this first release out is to get early feedback from the community, as well as to provide a core feature-set that enables some developers to start using this project model option immediately (with workarounds for the missing functionality which will come online in later refreshes).".

Here is a link to the tutorials page if you want to RTFM first (recommended...).

The key feature for developers to be aware of with this new ("old") option is that with the VS 2005 Web Application project model, the design-time partial class is generated and persisted on disk by VS 2005. This new design-time partial-class file has the filename naming pattern: PageName.aspx.designer.cs. If you expand any new page created within your VS 2005 Web Application project, you can see this file listed under the associated Page.aspx file along with the developer-owned code-behind file.

So the partial -class arrangement for a tool-generated/maintained file that contains the protected control field declarations and the other design-time code that Visual Studio requires is maintained (a good thing).

One other caveat that you will discover by practicing good "RTFM" techniques:

In this first preview release of the VS 2005 Web Application Project download, the feature support to automatically update .designer.cs files is not yet implemented. Appropriate .designer.cs files are generated when you add new pages, but you will be required to manually add and update the control declarations contained within them to get intellisense and compilation support within your code-behind files.

Finally, developers will be able to create re-usable libraries of user-controls that are potentially referenced and pulled-in from multiple web projects. This provides additional re-use flexibility with large-scale web-projects, and with VS 2005 Web Application Projects is now easier than it was with VS 2003. For those who've been screaming bloody murder about this issue with the RTM release of Visual Studio 2005, you can now look forward to the "Dot Net Nuke" nuclear option!

Kudos to Mr. Guthrie and his team for delivering this nice present before Christmas so that we all can get used to it during some vacation time!

BTW, if you are one of those Geeks who think Active Directory is for weenies, have a look at the drink attribute.


CNN Reports Computers have decoded Mona Lisa Smile

Scientists analyzed the portrait of the Mona Lisa, a woman with famously mixed emotions, hoping to unlock her smile.

They applied emotion recognition software that measures a person's mood by examining features such as the curve of the lips and the crinkles around the eyes.

The findings? Mona Lisa was 83 percent happy, 9 percent disgusted, 6 percent fearful, and 2 percent angry, according to the British weekly "New Scientist."

They also found out that she likes Fajita Burritos from Chipotle Grill, drives a Lamborghini, and likes to wear push-up designer bras by Verdissima.

As can be seen here in the after-scan photo, Ms. Lisa did not take kindly to being "scanned". Many people are not aware that Mona was also an expert object - oriented programmer. The only problem is, nobody has ever been able to find her code...

Ain't technology grand?


GAT (Guidance Automation Toolkit) Takes Life!

Back at the MVP Summit in Redmond in late September, I had a chance to talk at some length with my buddy and fellow MVP Daniel Cazzulino.

Daniel was up to his eyeballs in the GAT, along with Victor Aprea and a bunch of other contract people working out of the Redmond campus. I asked a lot of questions, and Daniel and Victor responded, and at that time, since i realized GAT really hadn't been "born" yet, I kind of "tucked it away" in my head for later.

Well, I'm happy to reveal that it's born, and developers should take note.

GAT is a first, but a very big step into extensions to Visual Studio 2005 that allows architects to author integrated user experiences for reusable assets that include frameworks, components and patterns. The resulting Guidance Packages are composed of templates, wizards and what they call "recipes" (it ain't Martha Stewart, folks), that can help developers build solutions in a way consistent with the architecture guidance and best practices.

If you look at the "history of GAT" on Wojtek's blog, you can get a much better feel for the heavyweight people who have helped to guide it in the right direction.

You can download the bits from the VS.NET Team System Development Center right now and start working with this excellent piece of work.

They came up with an extremely cool invocation layer, and if you are into best practices Patterns and Practices stuff, you will really like this bundle of work.

It has it's own MSDN Forum, and there are lots of resources available. So, check it out!


Windows Update: The Frying Pan, or The Fire?

I came into the office this morning and my machine had been rebooted.

"OK", I thought, and I looked in Event Viewer, and sure enough, at 3:00 AM just as expected, there had been some WIndows Updates installed.

Then the bad news came. I brought up Internet Explorer and when I clicked on a link in my Favorites or tried to enter an address in the Address Bar, IE would freeze. The only way to kill it was to go into Task Mgr and kill the IExplore.exe process.

At first I didn't think that a Microsoft update could have done this. So, I tried all the "Fixes" from the MVP Internet Explorer site and a couple of others. No dice. I had to use Firefox to go look for the fixes!

To make a long story short, after a couple of frustrating hours and no relief, I did what any intelligent developer would do. I booted off the Windows XP CD, went through the entire installation sequence to the point where it identified my existing Windows XP installation, and chose the (R) repair option. What this does is to completely reinstall the OS, but it leaves your Software and other Registry hives intact.

When I rebooted the machine, Internet Explorer was fixed.

Then, I installed Service Pack 2. After I rebooted, Internet Explorer was fine. Remember, I still had only the slightest suspicion that one of the Windows Updates that were installed the previous evening was suspect. After all, this is Microsoft, which is now so quality and security conscious, these updates HAD to have been well tested, right?

At this point, out of "best practices" habit, I made a complete Registry Backup with ERUNT. I figured, if something went wrong with updates, this might help.

Then, I went to Microsoft Update like a responsible computer user and it downloaded and installed Thirty One (I counted them!) - 31 updates that have been published since SP2 came out.

When I rebooted the machine, you guessed it. Internet Explorer was broken again. Restoring my Registry backup didn't help - it was obviously a replacement file - MSHTML.DLL, UrlMon.dll, Shdocvw.dll, or some other.

I also uninstalled EVERY SINGLE ONE of the windows updates where I could find an spUninst.exe in the windows folder. Still no relief!

Folks, that's it for me. I'd rather have some exposure to security risks than have to spend the better part of a full business day coping with this inferior shit! So tomorrow morning, I have to go through this process all over again, with one exception:


You can BET I won't be visiting Windows Update after reinstalling Windows XP and Service Pack 2! When you folks can prove to me that you will only put out stuff that's guranteed not to screw up my productive business day, then maybe I'll reconsider.

I am not writing this entry to hold myself out as a paladin of breaking the carapace of some sullen corporate bureaucracy, but rather to enlighten others who might become inured to the comforts of a service which may, due to their lassitude, provide them with a false sense of confidence in its ability to achieve its stated aims.

Put more simply, I'm not knocking Microsoft, just warning that "security" is only really useful to us when it doesn't break our STUFF! There is already some early newsgroup posting that indicates the culprit is KB905915. .

Here's a search for example. I counted 57 posts last time I checked.

Maybe those MS Security Patch guys ought to read this here piece on Agile Bridge Building Technology.

UPDATE, 12/7/2005: Finally, there is at least one fix available here.


Binary XML with your SOAP, Dear?

Yup. They're finally getting around to it. W3C has its first set of Recommendations around the Binary XOP concept, which essentially takes the XML InfoSet and provides a standardized binary format encoding set of rules.

Of course a lot of people are unhappy with how XML has evolved and with the involvement of organizations like the W3C. The fact remains that even though the transport cost of textual XML is untenable for a lot of devices, the cost of parsing of text-XML completely overshadows it.

By having a BinaryXML standard, we would see XML adoption in areas where its use is not currently widespread and we would see increased communications over what we have today. This would be good for all of us.

The only problem is, it needs to be "a" standard, not "twenty different" standards. I remember being on the SOAP list back in 2000. Dave Winer, Don Box and other luminaries did a lot of arguing and crying. But, they eventually gave birth, and it was "One SOAP". Hope the BinaryXML doods achieve the same!

On another note, there has been a lot of positive stuff about the new "Visual Studio Deployment Projects" add-in. It solves a lot of issues, even though it still doesn't solve development issues revolving around things like ASPX user controls. I just noticed that my buddy and fellow MVP Rick Strahl has updated his freebie "ASP.NET Compiler Utility" to include taking advantage of the ASPNET_MERGE.EXE utility that's packaged with it.

Rick, I don't know where you find the energy to keep putting out all this great stuff, but we love it, man!

Will the Wonders Never Cease Department: Is Santa really coming to town?

And on this same subject, apparently "Mr. ASP.NET" himself has just posted news about a completely new Web Project System for ASP.NET 2.0 that will "put back" a lot of the cool stuff developers grew to know and love in ASP.NET 1.1. You can read up on it here, it looks like there will be a preview in a couple of weeks (by XMas? doubt it).

Of all the MS Project Managers I've come into contact with, Scott Guthrie really deserves kudos for going out of his way, sometimes tirelessly, to "tell the little people" what's going on, listen to their gripes, and keep them informed on his blog. One time when I UnBlogged about my disappointment with some web stress test results in the then BETA ASP.NET 2.0 based on information in an MSDN article that was somewhat "ambitious", Scott contacted me on his own and made sure I had all the bells and whistles I needed to ensure that my tests were "OK". Never once did he attempt to "defend" the product - his sole aim was to help me and listen to my feedback.

Wishing you a pleasant holiday season, and I hope you survive the XBOX Famine.

Electronic Trading Heaven for top Software Vendor?

With this week's NYSE merger with electronic market operator Archipelago, the New York Stock Exchange has instantly become the world's top publicly listed stock exchange - and made a decisive plunge into electronic trading.

They used a reverse-IPO listing process - Archipelago, whose stockholders now own 30 per cent of the combined $10 billion entity, was already a public company.

Although 99 per cent of Big Board orders reach the NYSE electronically, only about 14 per cent are settled electronically. The remaining 86 per cent are executed using a technologically-updated, but still very recognizable version of the face-to-face trading floor that, in one form or another, has been used by the NYSE throughout its 213-year history.

I know how archaic it is - as a rookie broker for Merrill Lynch, they let us on the NYSE Trading Floor one day right after the close during broker training school. There's paper everywhere, people yelling and bumping into each other, and you literally have the potential for big-time errors to occur.

Specialists still manually match up buyers and sellers, and must still use their own funds to provide liquidity to particular stocks at different points during the day.

The Nasdaq now trades as many shares each day as the NYSE - even though the $20 trillion market value of the firms on the latter is five times the value of firms on the Nasdaq. This is mostly because electronic posting and settlement is cheaper, faster and less error-prone. All you have to think about is the fact that you can place a NASDAQ GTC limit order with Ameritrade (or any other other electronic broker) and get automatically notified by email, even if its on a $1.00 stock.

And it's all done electronically, virtually flawless, never touched by human hands. All done by software written by developers like you and me.

The notional value of stock in the new NYSE Group has tripled this year, and may well perform less spectacularly in the near term. Some analysts are even predicting a solid decline, as old-school members take advantage of access to the liquidity of public markets and the recent run-up in the industry's fortunes, and sell.

There's one definite winner in this: the software vendors who specialize in the electronic trading and settlement software that the new giant will undoubtedly need to implenent if it expects to compete.


Limitations of Polymorphic Behavior with Generics vs. Interfaces

Steve Michelotti exposes an interesting limitation of polymorphism with Generics:

In .NET 2.0, Generics is clearly the single most important language enhancement. However, to use generics to the full potential, developers should understand both the capabilities and limitations of generics as they relate specifically to polymorphism. In short, while generics do support some polymorphic behavior, the use of Interfaces should still be the preferred polymorphic mechanism in many cases.

Here's my code take on this, as a little "exercise". This is pretty "linear" so it should be fairly easy to follow. The actual demo "test" code lines are in the "class program". You can paste this into a VS.NET 2005 Console app if you want to play around with it by uncommenting some lines:

using System;
using System.Collections.Generic;
using System.Text;

namespace GenericVsInterface

public abstract class Developer
public string FirstName;
public string LastName;
public void WriteCode()

class CSharpDeveloper : Developer
public int NumLinesOfCodeWritten=0;

class VBNetDeveloper : Developer
public int NumLinesOfCodeWritten=0;

//Since both CSharpDeveloper and VBNetDeveloper inherit from Developer
//, the above compiles.
//With constraints we can define generic sub-classes:
class DeveloperAction<T> where T : Developer
public void DoAction(T item)

interface IAction
void DoAction(Developer item);

//And we'll change DeveloperAction to:
class DeveloperAction2<T> : IAction where T : Developer
public void DoAction(T item) { }
public void DoAction(Developer item)
{ this.DoAction((T)item); }

class Program
Main(string[] args)

//Using System.Collections.Generics.List<>, one could consume it like this:
List<Developer> list = new List<Developer>();

list.Add(new CSharpDeveloper());
list.Add(new VBNetDeveloper());

//As the example above, we can consume like this:
DeveloperAction<Developer> DeveloperAction =
new DeveloperAction<Developer>();
DeveloperAction.DoAction(new CSharpDeveloper());
DeveloperAction.DoAction(new VBNetDeveloper());

DeveloperAction<CSharpDeveloper> codeAction =
new DeveloperAction<CSharpDeveloper>();
codeAction.DoAction(new CSharpDeveloper());

// next line does not compile because of constraint:
// codeAction.DoAction(new VBNetDeveloper());
//However, if we try to push generic polymorphic behavior one step further,
// this is where things stop:
List<DeveloperAction<Developer>> DeveloperActionList =
new List<DeveloperAction<Developer>>();

// next does not compile:
// DeveloperActionList.Add(new DeveloperAction<CSharpDeveloper>());
// Next line does not compile:
// DeveloperActionList.Add(new DeveloperAction<VBNetDeveloper>());
// But now, using the interface we can get polymorphic behavior with generic classes:
List<IAction> developerActionList2 = new List<IAction>();
developerActionList2.Add(new DeveloperAction2<CSharpDeveloper>());
developerActionList2.Add(new DeveloperAction2<VBNetDeveloper >());

The key point is that a generic class is a type itself. The compiler doesn't care about CSharpDeveloper vs Developer, it cares about DeveloperAction vs DeveloperAction. In other words, it needs a relationship between the two DeveloperAction types, not the generic type parameters that created them.

One way to express this:

abstract class DeveloperAction

class DeveloperAction : DeveloperAction where T : Developer
public void DoAction(T item) { }
List DeveloperActionList = new List();

In order to get this to compile, we had to use a NON-generic class. And with that you get no polymorphic behavior - the abstract DeveloperAction class has no methods. In this case, there'd be no way to get at the DoAction() method without casting. That's the difference in polymorphism with generic versus non-generic classes.

The lesson learned is simple: You can get real, usable polymorphic behavior plus the benefits of Generics, provided you stick to your old friend, the interface.


Kudos to GotDotNet Team: VS.NET SCC Workspaces Provider and FIX for switching!

They've been making improvements over at gotdotnet.com, not the least of which is their new SCC plugin to use the GotDotNet Workspaces source control arrangement. Not only does it work very nicely in VS.NET 2005, it also works with VS.NET 2003!

It's just like working in VSS; the only difference is that since you are working via WebServices, it's a bit slower. But everything works! Really a boon to developers who like the Gotdotnet Workspaces concept and have small groups of developers who work together on a project.

The only downside is that when you want to get a project out of your regular VSS provider, IIT BREAKS and doesn't work!

But there are several fixes, the best one I've found is Soenke Schau's Sourcecode Control Switcher.

This little tray app tells you your current provider and let's you switch at will by changing the Registry entries for you. And, you don't need to leave it running. Just put a shortcut to the desktop and bring it up when you need it.



Serializing a Dictionary: Pictures Better than code

As an aside to my recent link about how to fold a T-Shirt, I present for your viewing pleasure the official tutorial on how to Serialize a Dictionary:

BTW, I don't usually do the "Me Too!" mentality thing of linking to other people's blogs since it tends to just muck-up the blogosphere. In this case Brian Johnston has a very funny and revealing poke at the JAVA vs. .NET space here. If you work with Microsoft technology for a living, maybe its time to just count your blessings... (Sorry like so many good things, apparently this went bye-bye. Thanks to Mr. Anonymous Coward commenter who brought it to my attention.).


Visual Studio.NET 2005: We will sell no wine -- before its time?

Recently we got a frustrated post from somebody on our eggheadcafe.com forums to the effect that "VS2005 is a Piece of Garbage and is bug Ridden" -- rant, rant..

After I got over the initial amusement, I went back to the MS C# newsgroup and noticed the same guy was stirring it up over there too. In fact, a few people did chime in about their own problems. And, to be fair, at least a couple more chimed in with their happiness and warm fuzzy success stories.

I mean, look. Everybody agrees this was an extremely ambitious release. And lots of people accused Microsoft of pushing it out the door too soon; these complaints started way before RTM.

This particular developer was attempting to preserve work he had done in 2003 with SqlDataAdapter by bringing it onto the Component Designer from the Toolbox (its not even in the default list, they want you to use the new SqlDataSource - which is actually quite cool). So he had a legitimate beef, although I think it's really kind of overkill to say that the whole product sucks on the basis of a rather narrow and inflexible project framework version conversion demand.

But at this point, I have to agree that they did rush it out. It's a wonderful piece of work, but It has BUGS man! I mean, Visual Studio 2003 has been out for three years and we will only see the first Service Pack next year! I put one in LadyBug back in August, they said it would be fixed by RTM and it's not. I had to reopen the item and remind them, and I still haven't seen any response.

Have you ever gotten the disappearing IDE bug? I've had it happen a couple of times. You're working on something and you start to type an opening brace or something and -- POOF! It takes off at Warp 9 and man that whole sucker is just GONE!

It's like it was never there! No trace of it ever having been loaded! Scary, man!

It reminds me of that old wine commercial with Orson Welles "We will sell no wine . . . before its time." I bet he never drank an ounce of that rotgut.

Would that it were true though . . .


SourceSafe Web Interface (SSWI) and "How can I tell if my App Blew Up?"

Looks promising. Haven't tried it yet. Let me know if you have any feedback on it.


How can I tell if my App Blew Up (Unhandled Exception)

("What?", you say, "I never have unhandled exceptions in my applications!")

The AppDomain unloads when your app blows up because of an unhandled exception. But it also does this before everything goes into the Black Hole:

AppDomain domain = System.AppDomain.CurrentDomain ;
domain.UnhandledException+=new UnhandledExceptionEventHandler(domain_UnhandledException);

private static void domain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
EventLog evt = new EventLog() ;
evt.WriteEntry(e.ExceptionObject.ToString() ) ;

Unfortunately, in CLR 1.X this doesn't fire in the same AppDomain. You can try code like this, however:

AppDomain domain2 = AppDomain.CreateDomain("domain2");
domain2.CreateInstance("DomainLib", "YukkaPuk.ImaDweeb");

You can also set the following registry key:

to a DWORD of 0xFF00 or 0xFF02, which should force a JIT-attach dialog to come up and give you the opportunity to at least figure out what kind of exception this is. That would give you a starting point to figure out why your app is blowing up.

If you want to get ambitious, you can use the newest version of Microsoft's AD-Plus tool and the correct OS debug symbols, running in Crash mode, to dump out what blew up!

Finally, if all of the above really gets you confused, here's some great news on how to fold a T-Shirt!


Time for a new Global Energy Policy?

Shafts of ancient ice pulled from Antarctica's frozen depths show that for at least 650,000 years three important heat-trapping greenhouse gases never reached recent atmospheric levels caused by human activities, scientists are reporting today.

The measured gases were carbon dioxide, methane and nitrous oxide. Concentrations have risen over the last several centuries at a pace far beyond that seen before humans began intensively clearing forests and burning coal, oil and other fossil fuels, and the results are being published today in the journal Science.

"CO2 and climate are like two people handcuffed to each other. Where one goes, the other must follow. Leadership may change, or they may march in step, but they are never far from each other. Our current CO2 levels appear to be far out of balance with climate when viewed through these results, reinforcing the idea that we have significant modern warming to go.", said James White, a geology professor at the University of Colorado, Boulder.

Did you like Hurricane Katrina? Want some more? Hey, just keep drivin' that gas-guzzlin' SUV to work every day, with you being the only person in it!

How much evidence do you NEED? Did the Twin Towers coming down not convince you that there are bad, BAD people who want you DEAD, or have you just conveniently "forgotten about it"?

Gas and oil prices have come down dramatically, exactly as I predicted in early October, is that why we are "forgetting"?

We put people on the fewkin' MOON FORTY YEARS AGO! Are you telling me we can't take care of this shit?

We got a bunch of "status quo" good old boys in Congress who better wake up before all our grandchildren are DEAD. Let's get the "lead out" and formulate a long-term energy policy that really will work for America and the civilized world -- for the next 100, 200 years - and beyond. What kind of idiotic intellectual stagnation and lack of vision are we suffering from today?

Let's show some fewkin' GLOBAL LEADERSHIP for a change!

And at the same time, we can tell the oil guys in the Middle East to take a well-deserved HIKE. We can produce enough ethanol from corn right here in the USA to power every car, truck and bus in our country. And it costs WAY LESS than gasoline from OIL. If you travel through Nebraska, you can buy 95% Ethanol from corn at the pump -- and most modern cars and trucks will run great on it with no required modifications. How come it's not happening everywhere else? Simple: Your Congressperson and Senator aren't being pressured to do anything about it!

This isn' t about Democrats vs. Republicans, folks. It's not about Bush and Cheney being hooked into "Big Oil". If you think it is, you completely missed the message.What it's about is our future. Trade in your SUV to some sheik in Bahrain and start writing letters to your elected representatives. At least, it's a start.

I've been chastised for not sticking to technology and .NET on my UnBlog. My formula is simple: mix in enough of my personal view on world events I think are important, along with the technology stuff, so that programmers will read both. So what do you think? Do you have an opinion, or do you just think "Oh, yeah" and that 's the end of it? If you have a conviction, then get off your ass and DO SOMETHING about it, dood!

Incidentally, an astute blogger commented on a previous post of mine about the Committee on Energy and Commerce
with an interesting link that concerns this topic. Maybe we just need AN INVESTIGATION INTO THE COMMITTEE ON ENERGY AND COMMERCE?

Here's the deal: Even if you don't believe the research, don't we STILL NEED TO HAVE ENERGY INDEPENDENCE FROM FOREIGN OIL? I'm SICK of these power-hungry bureaucrats who think their SHIT DOESN"T STINK, and who are disconnected from the reality of global economics and security! We pay their salaries through our hard-earned tax money. They need to listen to US!

That's my two cents! ( for more information on ethanol, you can start here.)


New Version of Microsoft AntiSpyware; Anti-Malware blog

A new version has been released that extends the timeout of the software to July of 2006.


Of course, you'll either need a "Genuine Windows" Product key on your OS or a good friend who does. (My "Genuine Windows" MSDN Universal Subscription Windows has always failed their little check, and I've never gotten an explanation for why, so go figure...)

Automatic updates are supposed to be turned on next week.

The AntiMalware team at Microsoft also has a blog here. Interesting reading.


Future of the [Free?] Internet. . .

Doc Searles has a very thought provoking, lengthy piece on Linux Journal entitled "Saving the Net: How to Keep the Carriers from Flushing the Net Down the Tubes".

Just to give you a bit of insight, here's an excerpt from the letter Vint Cerf (Google's new guru, and author of the TCP/IP protocol) sent to the Committee on Energy and Commerce about new Internet legislation that's making its way around the Hill:

"The remarkable social impact and economic success of the Internet is in many ways directly attributable to the architectural characteristics that were part of its design. The Internet was designed with no gatekeepers over new content or services. The Internet is based on a layered, end-to-end model that allows people at each level of the network to innovate free of any central control. By placing intelligence at the edges rather than control in the middle of the network, the Internet has created a platform for innovation. This has led to an explosion of offerings--from VOIP to 802.11x wi-fi to blogging--that might never have evolved had central control of the network been required by design.
My fear is that, as written, this bill would do great damage to the Internet as we know it. Enshrining a rule that broadly permits network operators to discriminate in favor of certain kinds of services and to potentially interfere with others would place broadband operators in control of online activity. Allowing broadband providers to segment their IP offerings and reserve huge amounts of bandwidth for their own services will not give consumers the broadband Internet our country and economy need. Many people will have little or no choice among broadband operators for the foreseeable future, implying that such operators will have the power to exercise a great deal of control over any applications placed on the network.
As we move to a broadband environment and eliminate century-old non- discrimination requirements, a lightweight but enforceable neutrality rule is needed to ensure that the Internet continues to thrive. Telephone companies cannot tell consumers who they can call; network operators should not dictate what people can do online.
I am confident that we can build a broadband system that allows users to decide what websites they want to see and what applications they want to use--and that also guarantees high quality service and network security. That network model has and can continue to provide economic benefits to innovators and consumers--and to the broadband operators who will reap the rewards for providing access to such a valued network.
We appreciate the efforts in your current draft to create at least a starting point for net neutrality principles. Google looks forward to working with you and your staff to draft a bill that will maintain the revolutionary potential of the broadband Internet."

If you believe the internet should remain free (in the various incarnations of that word, whatever it means to you), and you believe in free speech, I would recommend that you set aside some time to read his piece and take appropriate action.


What Will Happen if We Leave Iraq?

There is a lot of static on the dial right now about us being in Iraq. Invectives being tossed around, but I am not sure if there's a great deal of thinking behind them... Emotions, yes.

The Intelligence was flawed, Not just US Intelligence. We all know that. That Bush manipulated it to enable us to go to war? Not likely. But even if he did, what's the point? We're there! We toppled the most ruthless dictator since Adolph Hitler.

And now we need to stay and finish the job. It could take a while, too. Maybe five, maybe ten years. Not for the faint of heart. Maybe Bush should have laid the groundwork better on that score, I don't know. There are plenty of critics around, but with almost no exception, they seem to be long on criticism and short on quality ideas for better alternatives and real leadership.

If we leave Iraq now, or even in the next year, there is a real likelihood of a civil war; the kind that could draw, at the least, Syria, Iran, and Saudi Arabia in, either as sponsors or possibly as active participants.

Iran, which is currently on the brink of being a terrorist nuclear state with publicly espoused policies of wanting to destroy Israel and the Jewish state, would be vastly emboldened.

It is quite possible that some currently moderate Middle Eastern governments could become more radical. It is likely that the Palestinians could renew their intifada against Israel. Hamas is up for election soon. Not "good timing".

We will have managed to take most of Al Qaeda from far-off, impoverished Afghanistan and Pakistan, to centrally-located, oil-rich Iraq and provided them with a carte-blanche rationale to build a Middle East launching-pad of global destruction the likes of which 9-11 pales to by comparison. Do you like Al Zarqawi? If we get out of Iraq now, you just voted for him, pal!

It isn't beyond my imagination to envision Al Qaeda with its own oil reserves. The US position in the world would be badly damaged and our efforts to gain a grip on global terrorism would be set back by a decade.

If you think we need to get out of Iraq, I agree with you.

But, we need to get out of Iraq when the job is done properly, not because George Bush "Lied" or because some American troops are dying, or an election is coming up. This was our initial goal, and it hasn't changed. We were in Japan and Germany for many, many years after the war. It took a very long time. They are now solid Democratic allies.

We can do the same with Iraq, and set the tone for a more peaceful world in the future. We can do it. But, we have to have conviction and patience. We can't just "bail out" in mid stream as in Vietnam or the Bay of Pigs; this spells disaster.

Too expensive, you say? Nope. No price for Democracy is too high. Sell me War Bonds, I'll buy them. Do it more efficiently? Waste less money? Sure, I'm for that.


It's easy and its understandable for people to get all hopped up by emotions. The media is showing us this every day. They don't report the progress or the good news; it doesn't sell commercials very well.

When I was a little nerdy kid in high school I learned one lesson well: If you don't learn to stand up to bullies, you're TOAST. Al-Queda, Iraqi Insurgents, Iran, N. Korea -- they are all just bullies.

It's only if we are weak, lose our resolve, and back down, that they win. Democracy works. And illogical though it may seem, sometimes you have to get involved in a war to bring peace. Humans have been fighting for 45,000 years. When you sit down in a restaurant for lunch, don't you realize that subconciously you still "scan the horizon" for enemies? It's in your genes, you cannot change the human condition.

You can "Bash Bush" until your face turns blue. But until you can come up with a clear path and a detailed strategy that's actually better than what we have now, I suggest you shut up, and go back off and think.

The world has changed since 9-11. There are bad people who have no sense of morals or humanity, and who want you dead. You cannot appease or negotiate with maniacs who are willing to die to see you dead because they believe they will go to Heaven and have eternal life. The only thing you can do is track them down, and kill them before they have a chance.

If we leave Iraq, we are doing the exact opposite. We are telling them, "we give up, you win". Do you think they'll be "good guys" and stop? Better think again. The US Military recently found a letter from one of the top Al-Queda leaders telling his people exactly what to do when the "Americans leave". They have been just waiting for us to give up and get out of there to put their plans into place.

Somebody needs to analyze all the facts and the scenarios, and present them to the American people in a non - threatening way that they can understand. Because if we don't get our collective shit together and take care of business, painful though it may be, we very well may be dead.

What did Lincoln say?
"Congressmen who willfully take actions during wartime that damage morale and undermine the military are saboteurs and should be arrested, exiled, or hanged." --Abraham Lincoln

Google Analytics: ZZZZZZzzzzzz. . .

So they came out with this on Monday and we set it up. After all, it looks pretty slick, right? So we wait, and we check, and we wait, and we check.... And we wait....

First their help page said "In about 12 hour". Now its Friday ( how many fingers do you have on one hand? FIve, right? FIVE DAYS.) and still no reports. But hey! They've conveniently revised the page to now say "In about 24 hours".

You know what? I think Google's getting a little too big for it's goddamn britches. They're trying to do too much, too fast, and they're starting to FEWK UP, and this isn't the only example.

Googlies, I think you guys would be well -served by slowing down a bit and refocusing on the execution and the quality.


Problems Installing Visual Studio.NET 2005? SQL Server 2005?

Fear not! Installation guru extraordinaire, Aaron Stebner, has created a "central link" post that links to all his latest tips and tricks relating to installation issues:

You can find it here.


Incidentally, devil's advocate that I tend to be, I UnBlogged some time ago about ASP.NET 2.0 stress -testing based on an early MSDN article that was, well - let's say "ambitious", and heard back from Mr. ASP.NET himself, Scott Guthrie,
whose only objective was to "be objective" and who was very helpful with my tests.

I'm pleased to report Scott's latest:

"A few interesting stats that the stress team shared while I was filming them:
-- We run a total of 118 stress variations in the lab. Some do normal things like data access, standard page rendering, etc. Others simulate memory leaks, repeated app-domain restarts, crashes, and deadlocks (where the goal is to make sure the worker process recovers and the server stays up).
-- We put an average of 7,380 hours of stress testing on each build of ASP.NET 2.0 that we produced this year (note: we have a heck of a lot of stress servers).
-- Our lab throws 15 billion HTTP requests per day at ASP.NET servers in our lab.
-- All stress variations passed at 100% for the final build we released."

Kudos to ScottGu and his ASP.NET dev team.

When was the last time YOU stress-tested an ASP.NET App? Do you know how to do it? I spent nearly three weeks at the MS Testing Lab in Charlotte, NC under the tutelage of Dennis Bass and his crew. They were experts par excellance and I learned skills that have enabled me to increase my income and become a better developer. Learn how to stress-test your ASP.NET apps. Visual Studio.NET 2005 is an awesome piece of work. It has bugs, and it has idiosyncracies. But you can develop world-class applications with it. A big part of that process is learning how to improve throughput in PRODUCTION - which is often much, much different than development!

MS Acquires FolderShare, Product is FREE!

Subsequent to Microsoft's recent acquisition of FolderShare, the product is now completely free! Check it out at www.foldershare.com

This is an app that you install on all of your computers and it lets you access all your files via the web. If you install Windows Desktop Search on your PC with it, FolderShare will let you search your computers remotely.

You can also synchronize files between two computers, and even let others have access to your files. Basically the web interface allows you to select folders on the target machine that you want to share, and then send emails to anyone you want to be allowed to see it. You can set "permission levels" per user.

Pretty slick, IMHO.


Corporate Ethics 101: How to kill the Golden Goose

In an interview on NPR recently, a Sony executive, in response to the clamor about Sony's questionable actions and inadequate response regarding its CD rootkit deployment, suggested that since most people don't know what a rootkit is, they had little reason to care about it. I think this takes the cake for the most arrogant comment I have ever heard from a top technology company executive!

Rootkits, by design, are virtually undetectable by anti-virus and anti-spam products. Even if they are detected, they integrate themselves so completely into the operating system that they are almost impossible to remove without going through a clean OS installation. Sony is already being sued on this, The California class-action suit (PDF court copy) is only one. There's another pending in New York, and another from abroad that I've read about so far. Don't be surprised to see more lawsuits. Sony, has in their arrogance and stupidity, created the classic Corporate Ethics 101 textbook example of attempting to solve a problem via subterfuge, and succeeding only in creating a much bigger problem.

The problem with Sony's rootkit is that once installed, it can hide any file, regardless of who puts it there. Meanwhile, the Trojan Stinx-E has been proliferating to take advantage of Sony's incredible blunder. The post distributing it also quotes Sony's now CEO as saying in 2001 that it would cheer him up to dispatch a virus to evidently punish those who illegally copy music.

The software, which Sony included on 20 or more recent CDs, gives no warning of the rootkit, nor does it inform users that it prompts PCs to contact a Sony website for updated lyrics or art, and in the process, reveals the user's internet address and details about how often the CD has been played. Another blatant violation of our privacy rights.

Obviously, if you get one of these Trojan files with an executable named "Article+Photos.exe" in the mail, don't click on it unless you really want a good reason to FDISK your hard drive and completely reinstall the works!

No matter what happens to Sony in the legal arena because of their incredible arrogance to the consumer who purchases their music CD's, the best way to handle this whole thing is to teach Sony (and it's arrogant corporate brethren) a quick lesson in Economics 101: DON'T BUY SONY.

That's my two cents!

Follow Up, Nov 15 2005: "From the frying pan into the Fire":

Sony BMG and the company that developed the antipiracy software, First 4 Internet Ltd. of Oxfordshire, United Kingdom, released a program that uninstalls XCP.

But the uninstaller has created a new set of problems.

To get the uninstall program, users have to request it by filling out online forms. Once submitted, the forms themselves download and install a program designed to ready the PC for the fix. Essentially, it makes the PC open to downloading and installing code from the Internet.

According to a Princeton analysis, the program fails to make the computer confirm that such code should come only from Sony or First 4 Internet.

"The consequences of the flaw are severe," the Princeton researchers said, "It allows any Web page you visit to download, install, and run any code it likes on your computer. Any Web page can seize control of your computer; then it can do anything it likes. That's about as serious as a security flaw can get."

There's much more to this story - the fact that researcher Dan Kaminsky found that 568,200 DNS servers knew about the Sony addresses, which means at least one compromised machine exists behind every one of them.

But the real protest should be by the artists whose work is represented on the BMG label. If I were one, I'd be voting with their feet to get away from Sony just as fast as I could.


Evolution in the bible, says Vatican

The Vatican has issued a strong defense of Charles Darwin, voicing strong criticism of Christian Fundamentalists who reject his theory of evolution and interpret the biblical account of creation literally.

Cardinal Paul Poupard, head of the Pontifical Council for Culture (yeesh, where do they come up with these names?), said the Genesis description of how God created the universe and Darwin's theory of evolution were "perfectly compatible" if the Bible were read correctly.

His statement was a clear attack on creationist campaigners.

"The fundamentalists want to give a scientific meaning to words that had no scientific aim," he said at a Vatican press conference. He said the real message in Genesis was that "the universe didn't make itself and had a creator".

This idea was part of theology, Cardinal Poupard emphasised, while the precise details of how creation and the development of the species came about belonged to a different realm - science. Cardinal Poupard said that it was important for Catholic believers to know how science saw things so as to "understand things better".

His statements were interpreted as a rejection of the "intelligent design" view, which says the universe is so complex that some higher being must have designed every detail.

In the US, Intelligent Design proponents couldn't care less about what the Vatican says, and continue their attempts to have the doctrine inserted into the public school curriculums in a number of states, continuing their efforts to mix religion with science. It is illegal to teach anything with a primarily religious purpose or effect on students in government-funded US schools.

Meanwhile, in the courtroom, under cross examination, ID proponent Michael Behe, a biochemist at Lehigh University in Bethlehem, Pennsylvania, admitted his definition of “theory” was so broad it would also include astrology. So, Astrology would be considered a scientific theory if judged by the same criteria used by a well-known advocate of Intelligent Design to justify his claim that ID is science, a landmark US trial heard in mid October.

The score? Church 1, Fundamentalists, 0 (IMHO)

Church, for respecting science as a valid domain separate from Religion and the fact that the two can exist together without negating each other.

Fundamentalists, zero - for attempting to pass off religion as science.

You know what I think? It's funny watching people get cut by their own swords. One group wants Creationism, another wants handing out condoms, another wants a moment for prayer, and yet another wants to teach how to save the environment.

What's been lost in all of this is that our schools still can't adequately teach reading, writing and arithmetic! That's why my boss is importing talent from another country.

ASPNET_MERGE and Web Deployment Projects Arrive!

The long awaited ASP.NET build tool add-in is here:


And Brian Goldfarb's blog item with additional links is here

"Visual Studio 2005 Web Deployment Projects provide additional functionality for building and deploying Web site applications that you create in ASP.NET 2.0 and Visual Studio 2005. This add-in includes a new tool that enables you to merge the assemblies created during ASP.NET 2.0 precompilation, and it provides a comprehensive UI within Visual Studio 2005 for managing build configurations, merging, and pre-build and post-build task using MSBuild."

... And the good news: IT REALLY WORKS!


GOT BUGS? VS.Net 2005 RTM: The infamous "Bouma Bug", et al

Frans found a particularly nasty one.

There are others:



This is annoying stuff, the Bouma Bug is particularly nasty since the whole concept of a code editor is that you should be able to type anything into it, whether right or wrong. In this particular case it's Intellisense going into an endless loop.
I had no difficulty reproducing this with Frans' sample code block; the instant I attempted to type in an opening brace, the entire IDE froze and I had to kill the process to get back my desktop.

It was actually reported by a user, but it was so late in the RTM release process that they decided to let it go. Of course, there's a workaround for almost everything...

You'll get two schools of thought on this type of thing. I believe that nobody releases perfect software and you have to pick a point at which you are going to release your product with the proviso that you understand what the issues are and will take every step possible to provide fixes, workarounds, or Service Pack(s) as soon as is humanly possible.

The other school would have us wait until mid 2006 to get the product, at which time I can assure you that there will still be bugs of one type or another!

In addition, my Ladybug submission of the "Snapin Failed to Initialize" for the August CTP with the Microsoft .NET Framework Configuration Control Panel Applet is STILL BROKEN on my x64 box under RTM, and I've reopened the bug.

My Grandmother, who lived to be 100, always said that "The way to understand recursion is to understand recursion."


Of iGovernment by Crony, and iBlogs

William Safire, in his inimitable concise style, writes in his weekly Times Magazine column from this Sunday about "When was the lowercase i before an uppercase anything born, and what did it stand for?"

He goes on to record that the first "i-product was the iMAc in 1998." This led to the iBook, followed by Apple's iPhoto, iTunes and of course the iPod. The meaning of i went beyond Internet, to be taken as "individual", "integrated", "interactive", or "what I want when I want it". Other companies jumped in. A furniture company calls its massage chair "iJoy".

So keep on the lookout for the iBlogs. I'm sure they are coming. Mine shall remain an "UnBlog", which means, very simply, that it isn't one.

Now of course since Miers has gone to the wolves, devoured by both Democrats and Republicans alike, we are presented with Alito, which suggests, as Safire laments, that it's back to "Government by Crony" (or perhaps, "iGovernment?"). But the fight brewing (and it will be a big one) isn't about judicial philosophy, experience, or whether you are Conservative or Liberal. What it's about is ABORTION.

And that's too bad, because it's a very minor facet of the big picture. The Supreme Court has already long since made its views known on the subject, and the Conservative "base" is attempting a stab at revisionist history. Conservatives bitch a lot about "left wing judicial activists". Since when is attempting to sway the Supreme Court to the right for the sole purpose of overturning Roe v. Wade not "right wing judicial activism"?

It's filibuster time again. Another nasty way to waste our tax dollars instead of having a hearing and voting up or down, which is what I thought we are paying Congress to do.


Visual Studio 2005 and SQL Server 2005 available on MSDN for subscribers


If you need help uninstalling beta versions, Aaron Stebner, MS Developer extraordinaire, has posted the latest versions of his "uninstall and cleanup tools" here.

Really, these work better and faster than using "Add / Remove" from Control Panel anyway :-)

Stebner has additional information that can be helpful in removing "unfound" versions of SQL Server 2005 Betas/ CTP's with the Cleanup Tool (that uses msizap) here.


Flash! Legitimate use for VB.NET found!

Yup. I believe I have found a legitimate, really useful (a la "Thomas the Tank Engine") use for Visual Basic .NET!

There are lots of scripts out there written primarily in VBScript that enable developers to do all kinds of cool things. If you aren't familiar with what I'm talking about, visit the TechNet Script Center and have yourself a look.

Now the cool thing is, you can paste a lot of this stuff into a VB.NET Class Library project, and all you need to do is massage the "Set", "wscript" and other VBS script-generic statements to regular old VB.NET Objects and fix up the code until "It Just Works"!

The key feature of this completely innovative and mind-blowing technique that most VB.NET afficionados will really like is that in order to make it really, really easy for yourself - you can Turn Off Option Strict and Option Explicit! ("What?", you say, "I already have them turned off...")

My Gosh! I've already (ahem) "written" a class library for my boss that enables and disables Network Adapters, and now I am "writing" one that allows you to add or delete an IP address to an adapter!

Will the wonders never cease? Long Live Visual Basic! (And apple pie, pumpkins, and the Rolling Stones...)


AJAX popular with home users, study shows

J.R. of Happy, TX reports he is using Ajax successfully on his SmartPhone. He says it "cleans up that small screen right nice".

In other news, a woman from Newburgh, NY is reportedly suing the Colgate-Palmolive Company over a hot bottle of AJAX that spilled off her washing machine and ruined three dresses.

Jack Spratt of Horse, IN reports that he uses AJAX every morning to clean his bathroom. Jack says that the product "doesn't mess up the UI of my bathroom mirror " and "there's no flicker or page reload when I flush the toilet."

Meanwhile, blogger Don Hopkins reports "AJAX is like cocaine: it seems glamorous until you actually start using it, then the unintended consequences totally f**k you up."

Hopkins posts the "Special Hazard Precautions for AJAX":


And Otis ThunkelDinger of Mudville, TX exclaims "Well, butter mah butt and call me a biscuit! That AJAX done called me back on my cell phone before the page done come up in Internet Exploder!"



WDTA= "What Does This Affect".

Yup. Came up again. Other developers came to me with a classic engineering problem (One of those, "Uhh, we think we shot ourselves in the foot", how do we fix it" kind of deals).

They were storing Xml documents that represent classes in the database in string form. Problem is, they didn't add a column to show the Version of the class / xml that was stored.

And of course, one ambitous developer modified the class in their DAL, and now when they retrieve the Xml, deserialization fails. He didn't ask that magic four word question that developers should ALWAYS ask when making a code change: "WHAT DOES THIS AFFECT?".

What's the answer? A simple answer is to add a column to the table that specfies the class version that is stored in the varchar or Text field of the table, and to mirror this
in some sort of constant string field in the class that is to represent the deserialized xml string. So when you pull the xml out of the database, you will automatically know which class it is supposed to be deserialized into. A better solution would be to store the assembly namespace.classname as the unique key. This way, you could even load the assembly dynamically at runtime if you needed to. For example you could have MyDALJunk.ClassDoSomethingCool1, MyDALJunk.ClassDoSomethingCool2, etc. as the version column items in the database table, and the compiled assemblies on the filesystem for these classes would be named exactly the same.

As far as matching up old records with new, I suppose you could write an XML -> XML XSL Transform to map the old documents into the new, or if it is simple, you could just eyeball the old guys and "Fix them up" by hand, and re-save them.
In this particular case it seems the "new" xml just has new elements but they aren't populated (yet). So the easy answer is to grab a dataset of the records that need to be changed, deserialize each row's xml column into an instance of the "old" class, then create an instance of the "new" class and do a node-for-node replacement, then serialize the "new" class and update the row in the database with it.

And of course, as one intelligent commenter has already posted, we could have unit tests too. I didn't even mention this in the original post, even though I recently wrote a review of James Newkirk's excellent new MS Press book on TDD. But of course, you need to be able to crawl before you can walk, and for a lot of developers, asking them to create and maintain test fixture code for NUnit is like asking a baseball player not to spit.

But the bottom line message is simple: Ask the magic question "What Does This Affect" whenever you are going to change code. Then you won't have to spend as much time going backwards, right?


"The Generation of Random Numbers is too Important to be Left to Chance"

I just had to laugh this morning when I read about somebody finally hitting the winning number in the PowerBall lottery, which had gone for 20 rollovers without a winner. People do the silliest things:

"Mary Neubauer, spokeswoman for the Iowa Lottery, said hundreds of ticket buyers had played a set of numbers from the ABC drama "Lost," which featured a character who won $156 million by playing a string of digits obtained from a patient in a mental institution: 4, 8, 15, 16, 23 and 42."

I'm getting the idea now. Television actually DOES reduce your IQ!

By the way, the famous quote in the title is from Robert Coveyou, the noted physicist who was chief of the Manhattan Project that built the first atomic bombs.


On Technical Books, Accuracy, and "Holier than Thou" pedantic attitudes

Among my other travails in the .NET world, I've been serving as a Technical Review Editor for a couple of upcoming .NET related books.

You see some interesting and occasionally VERY ANNOYING statements made by various authors when you get to review these chapters. It becomes obvious (especially with .NET 2.0 where authors are often "rewriting" their 1.1 books, and more often than not, they aren't adding much new value either) that we are making statements and proclamations out of habit, even when they are DEAD WRONG, simply because some tech reviewer from the previous book didn't catch it.

I'm not naming names, because that's not the point. The point is, authors should take GREAT PAINS to get their facts straight. If I am a "noob" and I buy and read your book and accept information that you give me in the confidence that it is factual, and it turns out not to be so, you have done me an egregious disservice and hurt not only me, but yourself, your publisher, and the rest of the technical publishing landscape.

Last night I got so confused by two related "best practices pronouncements" in a book I'm reviewing that I actually had to write a short program in C# 2.0 to prove to myself that if I pass a DataTable (a reference type) into a method, and modify a column's value inside the method, that the ORGINAL Datatable will be modified! This is one of the most egregious and poorly explained language facts, reference types are passed by reference by default, it doesn't matter if your method is getting a "COPY" of the reference, the point is if you modify the object inside the method, YOU ARE MODIFYING THE ORIGINAL OBJECT. Period! You can put the "ref" keyword in front of the parameter, or leave it out. It won't make a bit of difference.

Just a word to the wise:

If you are an author, take the time to get your facts straight, and once you have, be sure that you can explain them very clearly.

if you are a reader, don't trust everything you read!


Will the new bull market in Gasoline spark a Telecommuting Boom?

Just a thought that popped into my head after looking at the charts of NYMEX unleaded. No question that gas is in a new bull market, OPEC is even considering reducing oil output, although the real problem isn't crude, its refining capacity.

If you own a gas-guzzlin' ESS YOO VEE and drive it to work and back every day, and you're the only person in the car (at least that's what I see from the vantage point of my 29mpg Camry every day) then maybe you are thinking about this?

According to the experts, it's not that technology is an issue - it's your BOSS! From the Washington Post:

"Ronald F. Kirby, transportation planning director of the council of governments, said the main obstacle to teleworking is that some bosses worry about supervising workers 100 miles away. "There is a strong level of resistance by middle managers," he said, even though studies have shown employees are more productive when teleworking."

And more - -
"Private companies also are taking a second look at telecommuting. AeroAstro, an Ashburn-based satellite and space systems business, announced yesterday that it is urging its employees to telework at least one day a week because of the gas shortage caused by Hurricane Katrina.
Richard Fleeter, the company's president, said the policy, which will reduce employees' transportation costs by 20 percent, is a valuable recruiting tool. In a statement, he said the move would "attract to our work force the most highly talented people regardless of their geographic proximity to our home in Ashburn."

As an ex-stockbroker, I've learned that you can find out a lot more about what's going on in Dodge by eyeballing some good charts than by watching warm fuzzy "aren't we good citizens of the global economy" Exxon Mobil ads on TV.

We have a very big supply-demand problem with gasoline products, and it has little to do with the price of oil. A quick look at the first chart shows that while global oil demand has been steadily rising, refining capacity isn't keeping up:

This next chart makes it even clearer. Capacity peaked in 1981, and the actual number of refinieries in production has declined to only about half what we had online 25 years ago! Why is this? Simple: the big oil companies and refiners figured out about 20 years ago that by not only refusing to build new refining capacity but by actually shutting down refineries, they could artificially affect supplies and make more profits. Does this make you mad, or would you just say "That's capitalism..."?

Meanwhile, real pump prices have actually declined somewhat from their 1981 peaks. For those who understand inflation, 1979-80 was when then Fed Chairman Paul Volcker decided "enough was enough" and stood on the brakes with both feet (which took some real balls, by the way). The reason real prices aren't as high as then is mainly because we don't have the kind of commodity inflation and interest rates we had then.

And another chart that clearly illustrattes that refining capacity is declining despite growing demand, with some more recent figures.

Finally, we can see that the real prices of oil and gold have reached a disparity from their peaks in 1980, indicating that either gold is underpriced (not likely) or that oil is overpriced. This could indicate that price pressure on oil is about to collapse (partly due to conservation by shell-shocked hordes of gas-guzzling SUV drivers), but it still doesn't solve the basic problem which is: If you want to lower the price of gas, you either have to produce more of it, or consume less of it. The choice is ours.

So what's the answer? Bill O'Reilly, who apparently just doesn't "get it" about economics, seems to think that Big Oil should just voluntarily "give up" 20% of their profits. Won't work. What could work is to give them a combination of carrot-and-stick incentives / tax breaks to actually create more refining capacity. And for God's sake - have enough strategic sense not to put it all in one place, like New Orleans, huh? But the bigger picture solution is simply to create new energy sources. You know what? Back in the late 1960's we were able to put men on the moon, and we can't even seem to get the picture about energy independence after 30 years of experience with being dependent on foreign oil, since our first big attack of oil -constipation back in 1974. You elected officials in Congress - this ain't rocket science, guys and gals. How 'bout it?


Posting Netiquette, "Urgent", and Helpful Mail Servers

It never ceases to amaze me what people can post on newgroups and messageboards and actually expect to receive an answer!

I wouldn't exactly characterize this as a "pet peeve", since I usually don't even bother to read them any longer.

You get tipped off to this when see things such as a post title that says "Please Help" (or, "URGENT" - in caps).

DOH! Of course you are asking for help, isn't that why you made a post? How about putting some descriptive phrase in the title that tells people what subject area the post is about?

In the C# newsgroup, Jon Skeet, whose work I particularly admire, even put together a posting netiquette piece on his web site entitled "Short but Complete"

On eggheadcafe.com , we have a "posting netiquette" page that I often refer offenders to.

Finally MVP Daniel Petri has successfully entered an MS KB Article on the same subject.

Besides providing a useful and descriptive subject line to your post, you want to consider providing information on at least some of the following, as Daniel astutely points out:

  • What are you trying to do?

  • Why are you trying to do it?

  • What did you try already, why, and what was the result of your actions?

  • What was the exact error message that you received?

  • How long have you been experiencing this problem?

  • Have you searched the relevant forum/newsgroup archives?

  • Have you searched for any tools or KB articles or any other resources?

  • Have you recently installed or uninstalled any software or hardware?

  • What changes were made to the system between the time everything last worked and when you noticed the problem?

The bottom line is, posting on groups and forums is an art. You are competing with others for the attention of responders. If you want to get the "first responders", you have to pay attention to what you put in your post.

While all of these have some element of humor in them, they all talk about the same concept: GIGO (garbage in, garbage out). and should be required reading for anyone considering making a post on a newsgroup or forum.

Helpful Mail Servers

You thought I'd forget, didn't you? One more thing that I think is really really DUMB: Mail Server software that sends YOU an email saying that something was wrong with your email that was really sent by a bot that's trying
to hijack your email address (a.k.a. "Xenophobic email attacks").

So what have they accomplished other than to further clog up the bandwidth in Paradise?


SQL Server 2005 CTP September Install, GotdotNet Workspaces FullTrust, and Telepathy API

One of the most annoying things I've recently seen is that the August AND the September CTP of VS.NET 2005 do not correctly install the GUI Control Panel applet, "Microsoft .NET Configuration" for 64-bit platforms.

I entered a Product Feedback bug on this for August and was told it was fixed and would appear in the next CTP or the RTM bits. Well, September CTP "RC0" came out, and its STILL BROKEN.

The Product Feedback people seemed like they were more anxious to close my entry (in this particular case) than to provide any real help, such as "Try using CASPOL.EXE" -- which of course, I already knew I'd have to do.

I hate caspol.exe , but that was my only other choice because I wanted to get the Windows Forms user control for Gotdotnet Workspaces source control working. So, after studying a bit, here's the code:

caspol -q -machine -addgroup 1 -url http://www.gotdotnet.com/* FullTrust -name "GotDotNet_Workspaces"

That will enable fulltrust for .NET Framework 2.0. The installer will take care of 1.1 for you automatically. Now what would really be nice is getting the VS.NET SCC plugin working too.

Of course, you must execute that on the command line in the .NET Framework folder for the version you want to enable, such as in:


Another booger: You go to MSDN Subscribers and log in and you look at the September CTP of SQL Server 2005. There's a main ISO image download. There's also a "tools" disk download. So you download and burn the "main" thinking you really don't need the "extras" on the second disk, right? NOPE! Halfway through the install, when you get to Books Online and all that crap, guess what! You get prompted for "DISK 2"!

Come-on folks, this ain't rocket science. If both disks are required for an installation, then how about let's show the simple courtesy of puttting a message up there explaining so. How about it?

We're pretty smart, but we aren't telepathic yet! Now that I think about it, if you ever come out with the Microsoft Telepathy API SDK, please put me on the beta testers list. I can just see the release text now:

REDMOND, Wash. -- Oct 30, 2006 -- Microsoft Corp. today announced the release of beta version 1 of the Microsoft® .NET Telepathy® 1.0 API, the latest version of Microsoft's suite of bioinformation application programming interfaces. Beta 1 features Microsoft's innovative new high-level mind search language (HLMSL), a powerful new programming model that offers the easiest-to-use telepathy results toolset for developers. . .


New ATLAS framework bits, Google Blog Search, and VS.NET 2005 Uninstall Tools

Not much else needed to say about this except here's the link!

It's been almost 2 1/2 years since Google picked up Pyra Labs, (Blogger publishing service), and Google has been promising blog search since. Google web search has allowed you to limit results to blog file types such as RSS and XML in web search results, they haven't offered a specialized tool to gather purely blog posts.

Now that's changed. Google's new beta service is available both at google.com/blogsearch and search.blogger.com. Google blog search scans content posted to blogs and feeds in virtual real-time.

Here's a sample search for "Peter Bromberg's UnBlog" in rss format, that you can actually plug into your feed reader. And, here is the same search in regular HTML format.

I've already added this as a new "engine" in our eggheadcafe.com RSS multisearch app, that now searches up to 20 different engines simultaneously on a threadpool, removes duplicate links, and presents the results. Results of recent searches are cached, and are available in the "Recent Searches" link in a page-able DataGrid of links.

Finally, Aaron Stebner, who authors the "Build Uninstall" tools for VS.NET 2005, informs that the newest version is available AND there is a "Find it and Fix it" tool as well for those of us who may have a botched uninstall. (Geez! That never happens to me...).

Here's the link to Aaron's post.


Green Squiggles, Red Squiggles, XHTML Standard(s) and VS.NET 2005 RC0

Red squiggles correspond to validation errors such as a missing closing tag. Green squiggles correspond to validation warnings such as the use of deprecated tags.

See how easy that was? Seriously, Stephen Walther, author and developer extraordinaire, has a new article at MSDN entitled, "Building ASP.NET 2.0 Web Sites Using Web Standards."

I say it should be required reading for EVERY developer who is using or getting ready to use ASP.NET 2.0 (including a few book authors I can think about).

It's 53 pp printed out, and very well put together.

On a side note, I notice this morning that Release Candidate RC0 is dropped at MSDN Subscriber Downloads in advance of PDC 2005. As one would expect, the Subscriber login is overloaded and doesn't work.

And a further note on TDD and test coverage from a previous UnBlog post about test coverage, MS Press's new book by Newkirk on TDD is out:


Katrina and the Democratic Blame-A-Tron Machine

Doesn't sound like the title of a short story by Hemingway at all, does it?

Everybody wants a "full investigation". The Democratic "Blame-a-Tron" Wind Ensemble is cranked up, repeating its mantra of Let's Blame Bush, Let's Bash Bush.
The problem is, they're dealing on emotions, not facts, and their little orchestra, while playing from the same old sad sheet music, doesn't have a conductor. Nancy Pelosi, Ted Kennedy, Barbara Boxer, and the rest of the Democrat "wind" section all need to go home with their instruments and practice their scales.

Look, this stuff has nothing to do with political parties. We don't really need to waste any time and money on investigations because it's already obvious to anybody possessing an above room temperature IQ what happened. It's about people who were incompetent, regardless of political affiliation:

The Governor: After the crisis struck, Governor Blanco remained indecisive.

A transcript from CNN of Mayor Nagin's comments indicates Blanco waited 24 hours to decide on which federal plan to initiate.

That wasn't the only time she froze up. She took control of the emergency apparatus, but continued to refuse to act. President Bush had to personally call and beg Blanco and Mayor Nagin during dinner to order a mandatory evacuation (1). They still waited until the morning. A state of emergency was ordered August 26th at 9:44pm, they waited until the 28th at 10am to order the evacuation. A full 36 hours could have been added to the evacuation time, which could have included the National Guard going door-to-door to save people and get them out of New Orleans.

Blanco just sat around and failed her people. She refused to give authority to the federal government to act.

The Mayor:
Mayor Nagin had lots of buses he left in their parking lots that could have gotten people out. The initial responsibility of evacuating people in New Orleans belongs to the Mayor, and he did little to nothing beforehand. Lest we forget, Mayor Nagin is an Afro-American, and he had both the authority and the ability to help out the poorest of his city who don't have transportation and many of whom are black, so please don't hand me this "racial bias" B.S.

The evacuation plan called for using buses (see below) to get those without cars out, but instead Nagin left the buses sitting in the parking lots to get destroyed. They could have at least taken the buses to higher ground so they could have been used after the hurricane passed, not to mention for getting people out before the hurricane hit. Nagin did a great job, in the aftermath, of pointing fingers at others and throwing temper tantrums on live TV, but the guy had a written plan and he failed to implement it.

The New Orleans Police Department - Two-thirds of the police force left. FEMA has no plan for such a catastrophic power vacuum, which only strengthened the anarchy. Armed bands shut down rescue operation, necessitating the militarization of the environment.

There were FEMA and other rescue teams that got in pretty quickly, but snipers were shooting at rescue helicopters, pirates boat-jacked rescuers, and mayhem broke lose, with even the police looting and standing by while the people did so. The government could have stepped in and taken the food first and rationed it. Instead it permitted an environment of lawlessness.

Rescuers had to halt operations in general, and at locations like the Superdome, because they had no security with which to be able to proceed. This necessitated a buildup of military force that could provide security, which wasn't planned for, and which took more time. More time, and more lost lives.

FEMA could have handled some things better,but the real responsibility in the first few days of a natural disaster is local, not federal. The states have to authorize help, and Louisiana didn't do it. Mississippi was hit by the same hurricane and there was little crisis there because Gov. Barbour acted quickly, showed leardership and decisiveness, and his people did what they were supposed to do. FEMA can have better plans and preparedness, of course. But the point is they shouldn't have had to deal with a complete collapse of local authority in the first place. They shouldn't have had to deal with 100,000 people trapped in New Orleans because the Mayor, the Governor and the police department all blew it.

So, since we already know who's to blame, how about lets spend less time playing the overture to the "Let's Bash Bush" ballet, and a little more time figuring out how to improve the system? And this says nothing about the National Disaster in the fact that we've had too much of our refining capacity in the afflicted area, and which I've already UnBlogged about.

N.B. I've been asked by 2 readers at this point about sources. My initial comment response may have had it's URL chopped off, so I'll post a few here and below -->article, which appears in the New York Times<--.

You can read the City of New Orleans' official plan for hurricanes here

To save you some more research time, Here are some direct quotes from "City of New Orleans Comprehensive Emergency Management Plan.", which makes it evident that New Orleans knew that evacuation of the civilian population was the primary responsibility of the city not the federal government. The city plan acknowledges its responsibility in the document:

"As established by the City of New Orleans Charter, the government has jurisdiction and responsibility in disaster response. City government shall coordinate its efforts through the Office of Emergency Preparedness."

The city document also makes clear that decisions involving a proper and orderly evacuation lie with the governor, mayor and local authorities. Nowhere is the president or federal government even mentioned:

"The authority to order the evacuation of residents threatened by an approaching hurricane is conferred to the Governor by Louisiana Statute. The Governor is granted the power to direct and compel the evacuation of all or part of the population from a stricken or threatened area within the State, if he deems this action necessary for the preservation of life or other disaster mitigation, response or recovery. The same power to order an evacuation conferred upon the Governor is also delegated to each political subdivision of the State by Executive Order. This authority empowers the chief elected official of New Orleans, the Mayor of New Orleans, to order the evacuation of the parish residents threatened by an approaching hurricane."

It is clear the city also recognized that it would need to move large portions of its population, and it would need to prepare for such an eventuality:

"The City of New Orleans will utilize all available resources to quickly and safely evacuate threatened areas. Those evacuated will be directed to temporary sheltering and feeding facilities as needed. When specific routes of progress are required, evacuees will be directed to those routes. Special arrangements will be made to evacuate persons unable to transport themselves or who require specific life saving assistance. Additional personnel will be recruited to assist in evacuation procedures as needed. ... "

Further, Bob Williams, writing in the Wall Street Journal on Sept. 7, stated:

"The New Orleans contingency plan is still, as of this writing, on the city's Web site, and states: "The safe evacuation of threatened populations is one of the principle [sic] reasons for developing a Comprehensive Emergency Management Plan." But the plan was apparently ignored.

Mayor Nagin was responsible for giving the order for mandatory evacuation and supervising the actual evacuation: His Office of Emergency Preparedness (not the federal government) must coordinate with the state on elements of evacuation and assist in directing the transportation of evacuees to staging areas. Mayor Nagin had to be encouraged by the governor to contact the National Hurricane Center before he finally, belatedly, issued the order for mandatory evacuation. And sadly, it apparently took a personal call from the president to urge the governor to order the mandatory evacuation.

The city's evacuation plan states: "The city of New Orleans will utilize all available resources to quickly and safely evacuate threatened areas." But even though the city has enough school and transit buses to evacuate 12,000 citizens per fleet run, the mayor did not use them. To compound the problem, the buses were not moved to high ground and were flooded. The plan also states that "special arrangements will be made to evacuate persons unable to transport themselves or who require specific lifesaving assistance. Additional personnel will be recruited to assist in evacuation procedures as needed." This was not done.

The evacuation plan warned that "if an evacuation order is issued without the mechanisms needed to disseminate the information to the affected persons, then we face the possibility of having large numbers of people either stranded and left to the mercy of a storm, or left in an area impacted by toxic materials." That is precisely what happened because of the mayor's failure."

I won't bore you with more quotes, if you are really interested in the facts, do your own research. Thanks for reading.

1. Associated Press, Mandatory Evacuation Ordered for New Orleans, August 28, 2005, 10:48 a.m. CT.