Browsing Posts published in September, 2007

Since I’ll be in Austin for the ALT.NET Open Space Conference early next month, my friend, Jeffrey Palermo, asked me to give a talk at the Austin .NET User Group while I was in town. So without further ado…

How does NHibernate enable a persistence ignorant domain model? Why would you want a persistence ignorant domain model? Why does the NHibernate Mafia feel so strongly about persistence ignorant domain models? And who are the NHibernate Mafia anyway? This session will answer all these questions and more.

Date/time: Monday, October 8, 2007 starting at 5:30pm
Location: Microsoft MTC

My good friend and fellow plumber, John Bristowe, is on the road again, this time with the third installment of Microsoft Canada’s DNIC Tour. He’ll be in Calgary talking about how to incorporate the .NET Framework into your existing applications.

Date: Thursday, September 27, 2007 from 5:30 PM – 7:30 PM
Location: Nexen Conference Centre Theatre, +15 Level


Developer Night in Canada

Developer Night in Canada (DNIC) III – Bringing the Power of the .NET Framework to Your Existing Application

For the past few years, you’ve heard a lot about the .NET Framework and the development platform it provides to foster innovation. Meanwhile, you’re still managing applications written with thousands of line of VB 6.0 code and you’d give anything to move to a more modern development environment and platform.  In this event, we’ll walk you through real-world tips & tricks that you can use to bring your solution to the .NET Framework. Specifically, you’ll learn how to tackle the issues of integration and migration when dealing with legacy applications. We’ll also feature folks from the Canadian developer community to provide you their experiences and insights.

I was recently asked, “What is the real story behind the name of C#?” Let’s take a quick stroll down memory lane and on the way we’ll answer that question…

In the beginning – around 1997 – there was Project Lightning. I was also known as Project 42 because DevDiv (Microsoft’s Developer Division) lived (and still lives) in Building 42 on the Redmond Campus. (I’ve always thought that was an awesome building number for DevDiv with the little hat tip to Douglas Adams’ Hitchhikers Guide to the Galaxy. I’ve always wondered if it was intentional.) Early press announcements referred to it as “Next Generation Windows Services”. Eventually Project Lightning was dubbed Microsoft .NET, though some code names have been forever baked into the system.

Marketing was thinking of calling it COM+ 2.0 or the Universal Runtime (URT). Another idea was the COM Object Runtime (COR). Hence mscorlib.dll, which is still the assembly that holds the CLR’s main types and is the one assembly that must be loaded in every .NET app domain. (System.dll is often loaded, but need not be. Mscorlib.dll contains the code for System.String, System.Int32, etc. You honestly can’t do anything without mscorlib.dll loaded.)

Another code name that lives on today is in the Assembly Binding Log Viewer – fuslogvw.exe - which allows you to monitor the loading of assemblies into app domain – successes as well as failures. (If you’re ever having problems figuring out why the wrong assembly is being loaded, where a particular assembly is being loaded from, or why assembly loading fails, the Assembly Binding Log Viewer is the tool to use. It ships with the .NET SDK.) Now why is it called fuslogvw.exe? Fusion was the codename of the CLR Loader, which is responsible for loading assemblies into app domains. I still think that Fusion is a most appropriate name for a loader.

So back to the original question of the origins of C#. The codename of C# was Project Cool, which was rumoured to be a clean-room implementation of Java. This was back in the days when Sun was suing Microsoft over bastardizing the Java language. As I recall, Sun didn’t like the Microsoft-specific extensions in J++, which allowed it to interoperate with COM. So where did the name C# come from?

C# name was musically inspired. It is a C-style language that is a step above C/C++, where sharp (#) means a semi-tone above the note. (Being a musician myself, I think this is awfully fun.) Back when .NET made its debut, an amusing quip from the Linux crowd was to refer to C# as Db (D-flat), which is the same note as C#, but has different connotations. Two MS Research languages also bear musically-related names: Polyphonic C# and F#.

I hope you enjoyed this trip down C#/.NET memory lane.