Thursday, January 18, 2007

A New Version of Microsoft Terminal Services Client (Remote Desktop) Version 6 of MSTSC now supports multiple monitors(!) as well as wide-screen resolutions and other features that I haven't yet tried. This is the version that comes with Vista but it's worth noting that there is a download for Windows XP SP2 and Windows Server 2003. It's also worth noting that the new features are only available if the machine you're connecting to is Vista or Longhorn Server.

Wednesday, January 17, 2007

FluentInterface

I've posted before about the StringBuilder tip in .NET.

Martin Fowler describes this as an ExpressionBuilder pattern.

More formal terms are described in his post, for instance, a FluentInterface which allows code like this:

customer.newOrder() 
	.with(6, "TAL") 
	.with(5, "HPK").skippable() 
	.with(3, "LGV").priorityRush();

I personally like this style but agree that if every object had these strange looking methods it would certainly pollute an API.

Another formal term describing how not to pollute an API is CommandQuerySeparation.  Basically, this means that a method that changes the observable state of an object shouldn't have a return value. 

The ExpressionBuilder pattern is the solution to this:  it is a seperate object that defines the FluentInterface and yet doesn't pollute the API. 

I'm glad that I now know more than 3 patterns, the Factory pattern, the Visitor pattern, and the Submarine pattern.