Syndication

News

     

Archives

Miscelaneous

Programming

August 2005 - Posts

Note: this entry has moved.

Sealed keyword is by far the most annoying showstopper to extensibility. I hate it so much. I wish there was an FxCop rule that would enforce that:
1 - If a class is sealed, then it *must* implement an interface that extenders can implement to hook custom implementations.
2 - The sealed class cannot be used *anywhere* in an "if (foo is MyDamnSealedClass)" statement. The required interface from 1) must be used instead.
3 - If a method is sealed, the class should be sealed too, or an equivalent method called from the sealed one is provided for inheritors (implementation of the template method pattern). There's no point in providing a non-sealed class where it's most important behavior (say an Execute method in a Command class or something like that) is sealed and there's no way to change its core behavior.

Although the third one is a little bit extreme, the first two are a MUST. Another day I'll tell you where I found a few key such annoying combinations...
Posted by Daniel Cazzulino | 7 comment(s)
Filed under: ,

Note: this entry has moved.

I have complained in the past about the shortcomings of the Whidbey provider pattern (ASP.NET should I say?), which I always regarded as woefully inadecuate as a general purpose pattern for complex blocks and pluggable providers. At ClariuS it's not our style to just complain, so we got one of our brightest brains to work on Enterprise Library and do something about it. The result is amazing: both simple yet incredible powerful and flexible. I would bet you will see his code in VS Orcas! Don't miss his first post explaining what it's all about.

Note: this entry has moved.

One very important area where a dev lead must excel, specially at patterns & practices where there's a lot of interaction with product groups across Microsoft, is to be able to handle situations smoothly, keep several mind-threads and tasks running at the same time, etc., in other words, you have to be kind of a juggler with regards to people, projects, and so on.

Peter is very good at it, not only metaphorically, as you can see ;)

Click to enlarge

You can see Scott, Brian and Brad watch him in awe.

Note: this entry has moved.

If you happen to be around Buenos Aires, don't miss today's TechNight that will be an extended version of the presentation Wojtek and myself did at the TechEd'05. It's tonight (Aug-12, 7PM @ Microsoft Argentina).

Here are the slides that I'll be showing (along with *lots* of demos/code!!).

Note: this entry has moved.

Indigo and Avalon were cool names... I'm certainly going to miss them...
Posted by Daniel Cazzulino | 2 comment(s)
Filed under: ,

Note: this entry has moved.

 From Brad, I got to Craig's post about the bad things that happen when you build XML by string concatenation. His core statement is:
The moral of the story here is that if you find yourself doing something like this:
      xml = "<FOO>" + fooContents + "</FOO>";
then you should lose points on your programming license.
Now, I wonder how is XML different than HTML with regards to creating it. After all, you should probably be creating *X*HTML anyway, as it's the most compatible way of doing it. So, you should *also* lose points if you're doing the following:
output.WriteLine("<FIELDSET><LEGEND>Federation namespace list</LEGEND></FIELDSET>");
Guess where you will find **TONS** of code like that. This is so 1996 of them!!
Posted by Daniel Cazzulino | 6 comment(s)
Filed under: ,

Note: this entry has moved.

Enough said:

Nightly build != continuous integration

(Unless you’re unlucky enough to have a build that takes 24 hours, I guess…)
Hahaha... very true! (from Brad Wilson in an internal email :))
Posted by Daniel Cazzulino | 3 comment(s)
Filed under: ,

Note: this entry has moved.

Amazing one!!!
Posted by Daniel Cazzulino | 5 comment(s)
Filed under:

Note: this entry has moved.

If you have problems using CAB and you have GAT installed, read the entry about a known incompatibility, and the other one about uninstalling GAT if it refuses to :o).
More Posts