John's Brain Dump

All the technical gyrations I go through to build software, so I don't forget them and others can benefit from them.

Receive Email Updates

July 2006 - Posts

NDoc 2.0 is Dead!

I just got an email from Kevin Downs, chief of the NDoc .NET code documentation project, saying that he is no longer supporting development of the 2.0 version of the software. His primary reasons for quitting are (1) a lack of community support (read: $$$) for the project, and (2) a mail-bomb attack directed at him personally, apparently related to the fact that he's not working as fast as someone would like him to.

I love NDoc, I consider it to be the standard for documenting Microsoft .NET class libraries, and I'm sad to see it go. I really hope that someone is willing to pick up the project, since it really is (at least so far) the best thing out there to cleanly document custom assemblies. But I cannot fault Kevin for his choice, since I have a family to feed and relate with as well, and I can't spend all of my spare time working on massive software projects for free.

Here's the text of the email that Kevin distributed to his alpha tester group:

I have decided to discontinue work on NDoc 2.0 and no longer participate in any open-source development work. The development and release of NDoc 1.3 was a huge amount of work, and by all accounts widely appreciated. Unfortunately, despite the almost ubiquitous use of NDoc, there has been no support for the project from the .Net developer community either financially or by development contributions. Since 1.3 was released, there have been the grand total of eleven donations to the project. In fact, were it not for Oleg Tkachenkos kind donation of a MS MVP MSDN subscription, I would not even have a copy of VS2005 to work with! To put this into perspective, if only roughly 1-in-10 of the those who downloaded NDoc had donated the minimum allowable amount of $5 then I could have worked on NDoc 2.0 full-time and it could have been released months ago! Now, I am not suggesting that this should have occurred, or that anyone owes me anything for the work I have done, rather I am trying to demonstrate that if the community values open-source projects then it should do *something* to support them. MS has for years acknowledged community contributions via the MVP program but there is absolutely no support for community projects. Once Sandcastle is released, it is my belief that it will become the de-facto standard and that NDoc will slowly become a stagnant side-water. This will happen regardless of technical considerations, even if Sandcastle were to be less feature-complete. It's just an inevitable result of MS's 'not-invented-here' mentality, one only has to look at Nant and NUnit to see the effects of MS 'competition'. This is not, however, my only reason for stopping development work - I have a big enough ego to think I could still produce a better product than them :-) As some of you are aware, there are some in the community who believe that a .Net 2.0 compatible release was theirs by-right and that I should be moving faster despite the fact that I am but one man working in his spare time... This came to head in the last week; I have been subjected to an automated mail-bomb attack on both my public mail addresses and the ndoc2 mailing list address. These mails have been extremely offensive and resulted in my ISP temporarily suspending my account because of the traffic volume. This incident has been reported to the local authorities, although I am highly doubtful they will be able to do anything about it. This has was the last-straw and has convinced me that I should withdraw from the community; Im not prepared to have myself and my family threatened by some lunatic! Kevin P.S. If anyone wants to take over as admin on the SourceForge NDoc project - contact me. If not, I'll be removing myself in 14 days.
Share this post: email it! | bookmark it! | digg it! | reddit! | kick it! | live it!
Posted: Jul 26 2006, 07:39 PM by John | with 1 comment(s)
Filed under: ,
VB.NET and Block-Scoped Variables

When I was first introduced to .NET, I learned C#. I came from a C++ and Java background, and so C# seemed like the most natural language for me to choose for development. My entire development team worked in C#, and everything was beautiful.

Then, my company won a contract to perform a major system rewrite and integration project, and the developers that we are working with here came from VB. So naturally, we chose to use VB.NET for this integration. I've been coding in VB.NET for about two years now, and I've actually come to like it somewhat. Optional parameters are nice (if you just use VB), instead of needing to create a bunch of single-line overloads. But, I've been smacked back into reality. Check out the following two code snippets, one in C# and one in VB.

// C# for (int i = 1; i < 10; i++) { object o; // Any variable condition will work here. if (i % 2 == 0) o = new object(); if (o == null) o = ""; MessageBox.Show(String.Format("Loop execution {0}: o is {1}", i, o.ToString())); }

' VB.NET For i As Integer = 1 To 10 Dim o As Object ' Any variable condition will work here. If (i Mod 2 = 0) Then o = New Object End If If o Is Nothing Then o = "" End If MessageBox.Show(String.Format("Loop execution {0}: o is {1}", i, o.ToString())) Next i

The C# version of this code doesn't even compile. It complains, "Use of unassigned local variable 'o'", which is correct. The VB version, on the other hand, not only compiles, but IT NEVER SETS o TO NULL!!! That's just pure evil if you ask me. After doing some reading, I found that VB.NET doesn't support block-scoped variables. When you declare a local variable just inside a block, it's exactly the same as declaring it just outside a block. Developers *of* VB.NET should at least warn you that your variable is scoped at the procedure level, not at the block level. Developers *using* VB.NET should always, always, always initialize their variables to null values, to avoid errors that can rise from this wickedness.

Share this post: email it! | bookmark it! | digg it! | reddit! | kick it! | live it!
Posted: Jul 12 2006, 02:47 PM by John | with no comments
Filed under: , ,
Cross-Browser Implementation of DOM Range &amp; Selection

I'm very glad to find somebody writing quality code to ease the pain of creating cross-browser JavaScript. I've been working on an application that has DOM selections and ranges at its center, and was very pleased to find Jorgen Horstink's implementation of the DOM Range and Selection objects for IE and other non-standards compliant browsers. Per Jorgen's own comments, the implementation of selection is still a work in progress, but I am eager to see it once he completes it. If necessary, I may spend a bit of my own time working to move this piece of code along.

You can view Jorgen's original post here, and as far as I can tell from his blog, you are free to use the code in any way you see fit.

Share this post: email it! | bookmark it! | digg it! | reddit! | kick it! | live it!
Posted: Jul 07 2006, 07:49 PM by John | with no comments
Filed under:
More Posts