Installing Systems Center Essentials fails: “The specified domain does not exist or cannot be contacted.”

I’m trying to evaluate Microsoft’s Systems Center Essentials 2007. I say “trying” because every time I install it, I get an error in the setup log file.

The specified domain does not exist or cannot be contacted.

This makes no sense, because I’m logged in with a domain administrator account and the setup program is validating the domain-level service account. What gives? After two failed tries, I searched Microsoft’s web site, and I found this:

(KB 937831) The installation of System Center Essentials 2007 fails during the Reporting part of Setup and the following information is logged: “The specified domain does not exist or cannot be contacted”
– Fixes a problem that occurs if the computer’s NetBIOS domain name does not match the domain or if the computer’s domain suffix does not match the domain.

There’s a hotfix for the setup program (go figure) that fixes the problem. Unfortunately, the symptom (NetBIOS name discrepancies) is not the case in my situation, but the error message is the same. I tried applying the hotfix, and — guess what — SCE installed successfully.

Here’s the oddest part of it all. Why doesn’t Microsoft pre-apply the hotfix to the evaluation installer that they make available on their web site?

Excel crashes, and flooding Microsoft with error reports

Excel 2007 crashed on me while I was scrolling vertically using the mouse wheel. Impressively, Excel was able to recover, apparently right back where I left off scrolling.excel_error_reporting

I continued trying to scroll (again with the mouse wheel), and once again, after about 100 or so rows scroll by, Excel crashes again. This time, I choose to send the error report.

Recovery again works like a charm (at least one thing is working right). I try scrolling with the scroll bar; no crash. I try page-down and arrow keys; no crash. I go to a different part of the document and scroll with the mouse wheel; crash after about 100 rows pass by.

“Send error report” clicked again.

This is getting fun, so I’m going to do it about 20 more times.

CodePlex: Did they forget to back up a server?

CSSFriendly, the ASP.Net CSS Friendly Control Adapters, is an open source project I contribute to. Source code, issue tracking, and other services are provided using CodePlex, Microsoft’s alternative to SourceForge. Since last week, our source control server (Team Foundation Server, or TFS) has been down.

The reason for the downtime, as reported by someone on the CodePlex team:

At 3pm PDT on April 11th an operator error occurred that caused source control and issue tracker data on one of the Microsoft CodePlex servers to be accidentally overwritten. During the standard data recovery effort, a recovery backup configuration oversight was discovered in the routine backup process for this CodePlex server which is currently impacting immediate restoration of the data.

Fortunately, thanks to my years of experience in medium and large organizations, I can translate this into layman terms:

At 3pm PDT on April 11th someone screwed up and accidentally blew out one of the CodePlex servers. When we looked for the backup tapes, we realized that this server was never being backed up, forcing us to use expensive and time-consuming data recovery services to get the data back without too much egg on our faces.

Granted, this is speculation, but it’s the only plausible reason why you can’t get a server back online in four days. Fortunately our project has only been going for a few weeks, and we don’t have a significant history of source code changes or work items. Still, this does not give me any confidence in using CodePlex for any other projects, especially considering my excellent experience with and the availability of Google Code and SourceForge.

Microsoft OKs community development of CSS Friendly Control Adapters

Back in late 2006, I modified Microsoft’s CSS Friendly ASP.Net 2.0 Control Adapters to be distributable as a single DLL. Since that time, the code I wrote was downloaded from this web site, and everything seemed good, at least until the server crashed. After being prodded by a few people in the ASP.Net community, I moved this little project over to CodePlex. Before doing so, I checked to make sure this was OK with Scott Guthrie, the grand poohbah of ASP.Net at Microsoft. (You’ve got to cover your basis!)

Anyway, today I read a post on the ASP.Net forums stating that Microsoft OKs community development of the CSS Friendly Control Adapters. In short, this is a good thing for the users of this product, for reasons that are explained in that thread, and it looks like I’ll be more involved with the ongoing development of these adapters in the future. It’s also nice to see your efforts noticed by the largest software development company in the world. 😉

I will keep the pages on this site that mentioned these adapters, but I highly suggest everyone who used them to bookmark the CodePlex project “CSSFriendly” and use that as their source of code and information going forward.

KISM: Keep it simple, Microsoft

Microsoft, the company who provided the products and tools for millions of people to build careers off (myself included), has often forgotten that the simple solutions are often the best. In a recent blog post, hammett wrote about Microsoft’s missteps in this area and their focus on YAGNI (You Ain’t Gonna Need It) — at least, where “You” refers to most people.

[Digression: Someone at some point commented on Microsoft Word that “90% of the features are used by 10% of the people”. If I was designing a product and 10% of my features were used by 90% of the people, and the other 90% of the features were used by 10%, I’d either write two products, or I’d write one product that was incredibly extensible using a plug-in architecture.]

This feature-bloat approach to technology reminds me of Microsoft’s Enterprise Library and the Data Access Application Block (DAAB). In the first release of the DAAB, you can call a parameterized stored procedure and get a DataReader back using one line of code, as illustrated below.

IDataReader reader = SqlHelper.ExecuteReader(
    connectionString, CommandType.StoredProcedure, storedProc, 
    new SqlParameter("@ID", 1));

In the latest DAAB (part of Enterprise Library 2.0), this becomes:

Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetStoredProcCommand(storedProc);
db.AddInParameter(cmd, "ID", DbType.Int32, 1);
IDataReader reader = db.ExecuteReader(cmd);

I also should mention I also should mention that the latter example also requires a special configuration section added to your application config file, whereas the former just requires a connection string (which likely you already include somewhere in your application configuration).

The first example hides the complexity that you may not need in most circumstances. Granted, you can still use (or write your own) SqlHelper, but why break away from this entirely?

Simplicity is a wonderful thing. Let’s hope Microsoft finds it again. Give power to those who need it, and simple elegance to those who don’t. It’s not hard to do both, if you accept the fact that one size does not fit all.