There’s a great plugin for Windows Live Writer called VSPaste by Douglas Stockwell:  It lets you copy and paste syntax-highlighted code from Visual Studio into your blog post while retaining the coloring and formatting and automatically removing extra tabs.  Unfortunately, it always pastes the code as a new code block, even if you wanted…


Blog Resurrection

Sometimes in the course of software development it becomes best to start over from scratch.  I’m taking this approach with my blog.  I first joined Microsoft in 2000 as part of the Windows XP Embedded group.  In 2004 I joined the Windows Driver Foundation group and created a managed (.NET) interface to the User Mode…


Simple Paint Application

Here’s a screenshot of a typical “Paint” application: It has the following features: The “pencil” or “brush” tool let you draw freely on the canvas. You can select the color from either Black, Red, Green, or Blue. You can also select from four different thicknesses. The “text” tool lets you add text on the canvas….



I’ve been working on a very large-scale canvas application for a while now, and I finally checked in the first working prototype today.   The biggest challenge for this application is that the elements on the canvas are very rich.  They aren’t just simple boxes and lines.  Some of the elements actually contain full blown FlowDocuments…



Using a declarative language like XAML to define a UI feels like the right thing to do, but it has its drawbacks.  I appreciate that disallowing procedural code eliminates race conditions and side effects, but what about purely functional operations like simple arithmetic?  The lack of simple math operations gets even more frustrating since we…



In the same vein as System.More, I’ve also created a Windows Presentation Foundation counterpart called Presentation.More.  And just like System.More defines classes in the same System namespaces as System.dll and System.Core.dll, Presentation.More also defines classes in the System.Windows namespaces directly.  Not only does this work elegantly for code-based languages like C# and VB, but it…



Fluent programming is cool, and with extension methods you can make your code much more elegant.  I’ve been programming for years, but I still have to squint when I see an expression like Math.Min(z, Math.Max(y, Math.Pow(x, Math.Sqrt(x)))).  Is z the lower limit and y the upper limit?  Or is it the other way around?  It’s…



I, like most developers out there, have accumulated a set of classes and utility functions that have been used repeatedly in multiple projects throughout my career.  This code has followed me around in various forms; sometimes by copying the files directly to new projects, and other times by creating a shared DLL that’s referenced as…