Wednesday, March 31, 2004

Where Has Craig Been?

Most of these places, DevelopMentor sent me:


 


create your own personalized map of the USA or write about it on the open travel guide

Big Bummer

Ian Griffiths asks a great question in the comments on my post about System.Xml 2.0. Here it is:


That's excellent! But I have one question: why can't I do this?:

Book book = reader.ReadAsObject < Book > ();

What's with all this casting, in a world with generics? (Of course what you really want is for the template parameter to be inferred, but sadly you cannot infer template arguments from function return types.)


A quick experiment verified my assumption: generics are not CLS Compliant, as evidenced by this code:


using System;
[assembly:CLSCompliant(true)]


namespace GenericsCLSCompliant
{
  public class App
 
{
    static void Main(string[] args)
    {
      new Class1<App>().DoSomething(new App());
    }
  }


  public class Class1<T> where T : new()
  {
    public void DoSomething(T t)
    {
    }
  }
}


and the ensuing compiler error:


error CS3024: 'GenericsCLSCompliant.Class1<T>': type parameters are not CLS-compliant


What this means is that the important bits of the CLR libraries cannot leverage generics. This is a crying shame.

Tuesday, March 30, 2004

System.Xml 2.0 = Coolness

I was just reading this (via Aaron), and saw this piece of code:






if (reader.ReadToDescendant("book"))
{
   do
   {
      Book book = (Book)(reader.ReadAsObject(typeof(Book)));
      ProcessBook (book) // Do some processing on the book object
   } while (reader.ReadToNextSibling("book"));
}






OK, the highlighted bit is just so cool I can barely wait to start using it.


In case it's not obvious from the code, they've married XmlSerializer and XmlReader so you can stream through a document, yanking out objects as you go. They've also added the even cooler ability to write objects into an XmlWriter stream. To resurrect a saying from my youth: mint!

Sunday, March 28, 2004

DC Area Nerd Gathering

Tony Nassar proposes that we do a little get-together for those of us living in the DC area on Wednesday night, March 31st, starting at 6:30 at On The Border in the Tyson's Corner area. I think it's a fine idea! After all, we can't let the Denver and Portland guys have all the fun. Leave comments here if you plan to attend.

Saturday, March 27, 2004

Dot's Response

As is pleasingly typical of when I have an issue with Microsoft, I got a response to my complaints about GotDotNet. And it was a very good one. Thanks Andy! I'm sure people will be pleased to hear you're aware of the issues and are working on the problems.


Of course, I'm still not coming back just yet. :) The fact that the site should getting faster soon is great news, but like I said before, tools and stability are the main issue. I'd happily pitch in and write some decent tools myself, but I have lots of other projects that I need to work on first.

Wednesday, March 24, 2004

Dear GotDotNet

Chris Sells suggested that I send my specific complaints about GotDotNet along to the people that work on the site, and kindly pointed me to the right person at Microsoft. This is something that I should have done before my last post, of course, but better late than never. I sent them this email, which I'm posting here:


 


I'm not sure if you saw my recent blog post about leaving GotDotNet for SourceForge, but after reading it, Chris Sells suggested that I get in touch with you about the specific complaints I have. It's a good idea, and only fair, so here goes.


 


I should be clear that I don't really have a problem with any of the other features - but I've been doing a lot of software development on GDN lately, and my frustration level reached the breaking point. To whit, I have three main complaints with the workspaces feature of GotDotNet:


 


1) Reliability. I find that GDN frequently loses changes that I have checked in. I have to constantly diff a fresh download against what's on my hard drive to make sure I don't lose stuff.


2) Tooling. The tools are really not good. I have tried all five options for interacting with the source control system - web interface, web control, VS.NET integration, wksalone and wkssync - and they are all painful. None of them even comes close to the elegance and ease of use I can achieve using CVS and TortoiseCVS. On top of that, I find the enforcement of the VSS lock-on-checkout model very limiting, although I know that's a matter of personal taste. And I won't even start on the fact that there is no integration whatsoever with popular build tools such as NAnt or CruiseControl.NET - something I find to be crucial to doing distributed team development.


3) Performance. This is actually the least concern, especially if there are decent tools available. But GDN is slow, and that's annoying given the tools that are available.


 


In short, what I want GDN to be is a reliable source control provider with good tools. If, above and beyond that, it provided things like bug tracking, team websites, discussion boards, mailing lists, wikis, and the other bells and whistles that a distributed development project can use (and I know some of those things are available now), that would be icing on the cake. But stability and capability first.


 


I've posted this message on my weblog, to let people know that I was lame enough not to have written this email *before* posting my "Dear Dot" message. I would be more than happy to post any followup you provide. Just let me know.


 


Please do let me know if there's anything I can do to help. I've left GDN for the projects I work on, but that doesn't mean I don't want it to succeed. I'm all for having lots of good options.


 


Thanks!


 


-Craig Andera

Dear Dot

Dear Dot,


I want you to know I'm leaving you. I'd love to use that old line, “It's not you, it's me,” but unfortunately, it's you. I just can't count on you. I can't even remember how many times I've asked you to check in, only to be disappointed. And you're a dawdler - I got tired of asking you a question, only to have to sit around and wait for the answer. To be even more blunt, you're not sophisticated enough - I have fairly refined tastes, and you simply don't seem interested in all the finer things that I need to lead a rich existence.


Since you'll probably hear about it, I might as well tell you that I've met someone else. I don't want to mention any names, so I'll just refer to this other as “SF”. Oh sure, SF isn't perfect, but we share a lot of the same interests, and we just have a lot easier time getting along. And yes, it's true, I've been visiting SF on the side for quite some time now, so this isn't just some fling. SF, frankly, is just a lot more mature than you are, and I need that.


I hope you're able to get over your problems. I'd like to see you succeed in life, if for no other reason than that a lot of my friends still hang out with you. All the best,


-Craig


(With apologies to Don Box.)