I am Stupid.
Well, I feel dumb. I just finally made a really simple mental connection that I wish I'd figured out a long time ago.
Several months ago I made an entry here about my Habanero project, one of the dreaded Game Engine Projects that I was intending to use to develop some game concepts that have been rolling around in my mind for a while. I've barely even touched the project since, largely because of time, and largely because of energy: when I have free time, I rarely have the energy to do programming work. When I have the energy, I'm sort of obligated (by means of the fact that I get paid) to spend that energy doing programming for my employer. So I've been trying to figure out a way to continue work on this project, and maybe explore some of my half-formed thoughts on domain-specific languages, within the constraints of time that I've got.
The whole point of Habanero originally was to let me do games without doing all the stupid mundane programming first. I wanted to explore some concepts and do some experimentation with game content, but I needed a framework to do it in. That's sort of an impossible goal given that I have to do a lot of programming to get the framework in the first place.
Another thing I want to do is learn C#. It's time I started picking up a new language. .Net is a great candidate because (as I think most people can see) it's going to continue to become a major player over the next few years.
Of all the .Net languages available, I'm leaning towards C# for a few reasons. First and foremost is syntax: I have a cozy love affair with curly braces, and I'll be damned if I'll be unfaithful to them with the likes of VB.Net or Python. Secondly, C# has anonymous delegates, which I've basically been wishing for very deeply for many years. (In fact, I'm strongly considering proposing that we integrate anonymous delegates into our KC scripting language at Egosoft - they're that awesome. They're juicy and powerful, like Lisp macros, except without all the icky Lisp to get in the way of the coolness.)
Unfortunately C# is not at all suited to what I'm doing right now (i.e. working with a large, established codebase) so the only time I could start picking it up is when doing rapid utilities and tools. However, the point of rapid tools is to get them done fast, which I can do faster in languages I already know.
Usually, when thinking about one or both of these wishlist items, I'd give up in defeat. I don't have time to do either one, let alone both, and I can't decide which one to go for. Laziness then wins the battle by suggesting I quit thinking about all this crap and go to the go-kart place instead.
At this point, you've probably all made the connection that I just now - after months of consideration - have made myself.
Yeah, that's right: write Habanero in C#. Duhhhh.