Delegates, Lambdas, Type Inference and Long Playing Records

Today is my 33 1/3rd birthday! I’m one third of the way through my first century. I feel like I should go buy some LPs to celebrate, not that I have anything that will play them. In other news, someone sent me this code the other day. Suppose you’ve got a collection of mammals and…


The Root of All Evil, Part Two

There were a number of interesting comments to yesterday’s posting about premature optimization. Several readers pointed out that there are various options we could take: Do nothing. Maintain backwards compatibility and spec incompatibility. Change the spec to exactly match the current implementation. Change the spec and the implementation. Make the weird behaviour a warning now…


The Root Of All Evil, Part One

People often quote Knuth’s famous statement that premature optimization is the root of all evil. Boy, has that ever been the theme of my life these last few weeks as I’ve been banging my head against the compiler trying to figure out how we’re going to make it work with LINQ without breaking backwards compatibility….


Back in the saddle

Hey everyone, I’m back. Sorry for the two-month absence there. We’ve been absolutely INSANELY busy trying to figure out how to make the LINQ features work in C# 3.0 for the last two months. Add on top of that the fact that I’ve been running lights for an amateur theatre production for the last couple…


Regular Expressions From Scratch, Part Twelve: Superposition of States

Happy New Year everyone. Over the break I had a wonderful time reconnecting with my friends and family. And of course I came back to a huge pile of work! We’re going through the flaws that were discovered in C# 2.0 too late in the cycle to risk fixing, and some of them illustrate interesting…