I love Mono, I'm very fond of Linux, and if you give me a Mac, I promise I'll give it a fair chance!
Josh criticizes my "disregard for non-Windows platforms as a whole" in this comment. I guess that's pretty fair, at least lately, as I've been living in an all-Windows environment for, oh, the last six months or so anyway. But that's just an accident of timing: I haven't looked at Mono since last Fall and I went through a major hardware cycle over the Winter. Soon (maybe very soon if a particular contract comes through), I will get a Linux system up again. In my training material, I've made a very deliberate effort to teach C# and .NET as separate concepts from the VS.NET 2003 toolset and, to the extent possible, I've tried to make sure that all my code samples run under Mono as well as Microsoft's implementation of the .NET Framework.
Josh's last sentence is a little harsh, though. While I do believe that platform-specific programming has much to offer, I don't want there to be only one platform. I want it to be as easy to use C# to program my Linux-based Tivo as it is to use C# to program my Windows-based Tablet PC.
Not that I have Tivo yet. But when I get one, and if it can be programmed in C#, I promise I'll be hacking it!