I’ve been using Phantom, a .NET build system written for writing build scripts in C# and Boo, in various projects for quite a while and been very happy with it. I’ve even been so happy that I’ve never had any need to extend it. Until now.
The Don't Repeat Yourself principle is important. But it's not the only important principle or consideration for software design. Like all good things it should be used with caution and afterthought.
For several years I’ve had a little “utility” function that I’ve used in several projects that I use to convert property names into strings. The method uses "static reflection" to figure out the name of a property that the lambda expression returns the value of.
I love C#. Jon Skeet's C# in Depth has given me even more reason for loving the language. A small example is a nice little way of not having to specify generic type parameters when creating objects of a type with type parameters.
A guide to listening to keyboard and mouse input events from Windows users, including downloadable example code.
A list of tools and components that I've found usefull in my work as a developer, primarily of websites with ASP.NET.
I've created a small and highly annoying tool for training my self to use the keyboard more. You're welcome to download it and become annoyed.
Today I attended an excellent workshop about Scala development held by Ted Neward. During the session Ted demonstrated a different, functional, aspect of the Inversion of Control concept which he illustrated in Scala. Since it’s fully possible to do the same thing in C# I thought would borrow and modify his example to show a different type of Inversion of Control.