Tuesday, February 27, 2007

log4net and NUnit

I could not get NUnit to work with log4net today. I had tests (that did not have logging in) that called application code (that did have logging in), but whatever I did the tests did not log anything. I turns out that the test fixture must have a logger in it, for example:
[TestFixture, Category("Exchange")]
public class TestExchangeApplication : ApplicationTest
{
 static readonly ILog log = LogManager.GetLogger(typeof (TestExchangeApplication).Name);
.....

Thursday, February 22, 2007

ClearCase

ClearCase is an "enterprise" level source control system. It sucks for small teams. Sharing your work with team members is a simple 7 stage process:
  1. Check-in your changes to your developer stream
  2. Rebase your developer stream
  3. Deliver your changes to the integration stream
  4. Check-in your integration stream
  5. Create a base-line
  6. Recommend the base-line
  7. Your team members can the rebase there developer streams from your recommended baseline!
ClearCase is very slow at adding files, a project I added had about 10 files, and took over a minute to check-in! The Visual Studio 2005 integration is flaky:
  • It fails with an empty dialog box when opening a project
  • It fails "Can complete the process" when trying to save a checked-out file
  • It fails to check-out a file, even though VS thinks the file is checked-out
We are trying to work with unreserved check-outs, but ClearCase requires developers to explicitly merge simultaneous changes, nice.

Wednesday, December 21, 2005

More .NET Grids

I came across the Alchemi project today. It provides another grid computing solution for .NET developers, but this time its free for all.

Wednesday, November 30, 2005

Grid computing and more

Grid computing has come to C# in the form of version 3 of the Internet Communication Engine (ICE) from ZeroG. ICE also gives you fast, efficient, cross-platform and cross-language communication mechanism, including an efficient event system (IceStorm). ICE is free for open source projects, but you need a commercial license for other projects.

Wednesday, July 06, 2005

Effectiveness of different communication modes

In "Agile Software Development", Alistair Cockburn discusses different modes of communication, as illustrated by the following graph. The most interesting point is paper is the worst way to communicate, face to face round a white board is best.

Monday, June 27, 2005

RSS Reader, and more

I stumbled across a dashboard called klipfolio today, which I've started using as an RSS reader, amongst other things. It looks nice, has various email plugins (including hotmail), and weather reports. Check out the available widgets here. Oh, and you can develop your own "klips" as well....

Programming as Theory Building

Peter Naur wrote an article that describes the internal process of writing programs. It one of those things you read and instinctively know that it is right.

One important conclusion from this is documentation should be trying to explain why a program does things, and why is it designed the way it is.

Naur also explains why programs degrade over time, and that program modification has very real costs.

Read the full article here.

The impossibility of communication

A couple of recent events have reminded me about the impossibility of communication, i.e. communication is never perfect and complete. There is always an "information gap" between two people, and the width of gap over which we can communicate varies depending on our shared experiences.

In software development, we need to remember that we can never write specification and design documents that actually explain what we mean. We have to assume the reader has a certain level of experience.

  • the more experience the user has, the less we need to write.
  • the less experience the user has, the more detailed the document needs to be.
You can never hand over a document and forget about it, all documents are merely a starting point for discussions. See Chapter 2 of Aliaster Cockburn's book, "Agile Software Development" for more details.

Argument

Have you noticed that people only argue about things that cannot be proved one way or another. As soon as you can prove something, there is no argument. Next time you are involved in an argument that is not getting anywhere, remember this post.

Wednesday, June 15, 2005

Methods and Delegates in C# V2.0

One of my first posts on this blog was moaning about the method/delegate/refelection mismatch. I'm glad to see that in C# V2.0, at least one of my wishes has come true. You can implicitly convert a method to a delegate, like this:
class ConsoleApp
{
  static void Main(string[] args)
  {
    SomeDelegate dele = SomeMethod;
    dele();
  }

  delegate void SomeDelegate();

  void SomeMethod()
  {
    Console.WriteLine("hello");
  }
}