The work a system does and the interface to that work should be separated from one another. This is a concept that evolves from the Single Responsibility Principle and from Test Driven Development. Whether this work be hosted in a console program, a GUI program, exposed as a service for outside systems to utilize, or any other possible configuration, follow SRP and keep the work separate from the hosting interface that exposes the work to a client (a client in this case can be a person or another software system).
If you are writing object oriented code and you try to ensure that your classes maintain their invariants (i.e., ensure that your classes are always in a valid and self-consistent state), the new object initializer feature of C# will present you with some new challenges.
Ever mistype a path during Find and then have to live with it in the list forever?
The default PowerShell profile does not contain a variable for the Documents folder. Meanwhile Windows does not contain an environment variable for it either.
Rjae, Rob, Kasia Baron, and I went to the Deep Agile 2008 conference run by New England Agile Bazaar. The event was held over the course of two days at MIT's Tang Hall and was truly outstanding. The structure of it, as noted at Agile Bazaar's website, was a one-on-one discussion, debate-style, between Robert Martin and James Coplien and it focused on the realities of Agile software development.
Are you running Vista? Do you have dual monitors? Last question: do you have them stacked vertically?
One of the most ubiquitous patterns in life is the template. It enables us to generalize behavior - thus ignoring or postponing complexity.
This ability to generalize behavior - deferring derivative details - turns out to be extremely useful in agile software development. It encourages mock-object practices. It encourages simplest possible solutions. It encourages test-driven development. And most importantly it embraces change.
Closures are a powerful concept in some languages - a powerful tool in others. In my mind a tool is something I can ask for by name - as in, "I'd like a reciprocating saw, please." Languages where closures are truly a tool include Lisp, Python, Ruby, among others. For the time being I will use Ruby to discuss closures - although a switch over to Lisp may be necessary.
Every day I work I wish for a single feature in Visual Studio: the ability to move a code file from Visual Studio to another monitor. I can't stand the fact that I can't do this! Even if I switch to MDI view Visual Studio only lets each window move around within Visual Studio and not to other monitors. I would love to have a few code files dispersed on various monitors so that I can see more of what I'm doing at any given time.
In this day and age is this too much to ask? Why the constraint?
For those of us that use System.Object.ReferenceEquals when checking for null it can be annoying that ReSharper indicates Possible 'System.NullReferenceException' even though that is precisely what we are doing! There is a solution: add an Assertion Method to ReSharper's Value Analysis Options.