-
-
Scoble got very upset about a bad marketing site one of Microsoft's product teams created. He won't say which one it was but it is obviously http://www.msnfound.com. Don't bother clicking the link and visiting the site - I am friends with more space aliens than people who could conceivably find something of value there.
His basic objection to the site is that it doesn't do anything for the user, and he uses their lack of RSS feeds as an example of this. He is right about this but I don't see it as being that much of a big deal. It's hard to imagine why anyone would subscribe to an RSS feed of this junk. Even if they had RSS it wouldn't help because no "connector" would link to this site except to mock its inanity.
The scary thing is that this MSN Found site is wrong in so many more ways than Scoble identified. Have a look at the sourcecode of the homepage - it doesn't contain a single word of content! No search engine is ever going to index it. The links to the individual 'blogs' (I use that term very loosely here) are image maps so are unlikely to be followed by a search engine. There are no text links on the entire page. Even the image links don't have ALT attributes. Whoever did the HTML production on this site shouldn't just be fired - they should be subjected to Soviet style "consciousness raising" before they're allowed to touch a computer again.
Worse than the HTML and design is the apparent lack of purpose behind the site. I can't even begin to imagine what the purpose of this site was. It is marketing something? Is it marketing MSN? It is marketing CLR hosting in SQL Server 2005? I've spent 10 minutes going through the site (much more time than it deserved, much more time than any normal person would) and still can't figure out what it's trying to achieve. It blows my mind to think that some executive with budgetary approval let this one slip through.
Even if the aim of the site was to show that blogging is cool, it would have failed. These aren't cool blogs. No one is going to look at these blogs and say, ok, now I'm going to start reading Scoble and Dave Winer and Alex every night. MSN would have been better off choosing a couple of the best bloggers from MSN Spaces and featuring them somehow.
I seriously doubt it was, but if the aim of the site was to demonstrate the cool applications that can be built with ASP.Net then it would have failed. It doesn't use ASP.Net to do anything that couldn't have been done in 1994 using HTML and Notepad. Again, MSN already have great sites that demonstrate this (Spaces and Hotmail).
A lot of people are throwing shit at Scoble for saying he would have fired the team responsible if he could. But Scoble is right. These people deserve to be fired. The site is like a cruel joke - as if some PR types have made a list of all the things that are wrong with the web and then set out to build a site that exhibits all of them.
Cynical PS
MSN Found is almost so bad that I think it could have been a sad PR stunt by some renegade Microsofties. Think about it - they build a really, really awful site. Every blogger on earth links to it saying that it sucks. It gets a million visits a day. Then the people who built it take the site statistics to their out-of-touch boss and he gives them pay rises and great reviews for building such a high volume site. Now that is scary!
-
-
Try copying and pasting the following text into an ASP.Net page using Visual Studio.
<asp:PlaceHolder runat="server" id="ControlsPlaceHolder" />
Then save and reload your page. You'll get a compile error because PlaceHolder doesn't have a property called Name nor does it implement IAttributeAccessor.
This is possibly the most frustrating bug I've ever seen named as a feature. Visual Studio is actively going around breaking my code.
I had a quick look around Google groups, and found this helpful response to the issue:
> There is no way to turn the feature off, sorry. However, we are working on
> improving the feature in the next release.
> Thanks
> Mikhail Arkhipov, MS HTML Editor team.
I can't believe the fact that Microsoft has the audacity to call this a feature. Fucking incredible. Anyone who thought this 'feature' was a good idea should have their access to Microsoft's sourcecode repository tree revoked.
-
-
Interesting article on ZDNet about Java creator James Gosling critising Microsoft's decision to support C and C++ in the .Net Common Language Runtime.
He says some really stupid things, like describing the decision as one of the "biggest and most offensive mistakes that they could have made." This is clearly just hand-waving "look at me" behavior.
And obviously he isn't aware of the Whidbey Secure CRT.
My favorite part of the whole debate was a comment I saw on the Slashdot article:
-
-
I came across a cool trick tonight. It turns out that you can debug your code through the VS.Net debugger as NUnit tests it - without any flaky third party add-ins.
Here's how to do it:
- Open NUnit and your VS.Net solution. Set breakpoints anywhere you want to stop in your code.
- Under the Debug menu in VS.Net, select "Processes..."
- Scroll down the list until you get to "nunit-gui.exe", double click on it.
- Press "OK" on the window that pops up.
- Press "Close" on the processes window.
You are now debugging your code as NUnit tests it!
As a side note, this is also a super cool way of debugging ASP.Net applications. VS.Net's usual approach of opening and closing browser windows through the usual debugging process is very frustrating, particularly when you are re-submitting form values between rebuilds. You can use the steps above to attach the debugger to the ASP.Net worker process (aspnet_wp.exe) and there will be no mucking around with browser windows.
-
-
It's 9pm and I'm using the quiet time in the office to write some unit tests for our new CMS product. This process just uncovered an interesting bug:
1 public class SecurityManager {
2
3 public SecurityManager () {
4
5 if(user == null) {
6 this._user = User.CurrentUser;
7 }
8 9 InitialiseData();
10
11 }
12
13 public SecurityManager(User user) : this() {
14
15 this._user = user;
16
17 }
18
19 private User _user;
20
21 }
The static method User.CurrentUser returns the currently logged in user (using HttpContext.Current). This code was working fine in the web application but the unit tests were failing (throwing a NullReferenceException). The stack trace showed that the exception was being thrown from Line 6. But NUnit was calling the second constructor with a non-null User object. Line 6 shouldn't even be hit. I was confused until I remembered the order of execution for C# constructors.
public SecurityManager () {
Console.WriteLine("This will be executed first");
}
public SecurityManager(User user) : this() {
Console.WriteLine("This will be executed second");
}
The fix was simple:
public class SecurityManager {
public SecurityManager () : this(null) {
}
public SecurityManager(User user) {
this._user = user;
if(user == null) {
this._user = User.CurrentUser;
}
InitialiseData();
}
private User _user;
}
I got confused because I expected the constructor I called to be run first, just as method overloads work. In fact, constructor overloads work in the opposite way to method overloads:
public void CreateSecurityManager() {
Console.WriteLine("This will be executed second");
}
public void CreateSecurityManager(User user) {
Console.WriteLine("This will be executed first");
this._user = user;
CreateSecurityManager();
}
What a stupid mistake! I've just checked the last couple of classes I've written and they were correct - I guess the coffee was wearing off when I wrote this class.
I like blogging about embarressingly obvious mistakes like this because it means I'll never make the mistake again. :-)