Scott Hanselman

My Longhorn Analogy

October 18, 2003 Comment on this post [3] Posted in Longhorn
Sponsored By

Someone asked me to compare Longhorn to Windows 2000 and I said:

The difference between Lornhorn and Windows 2000 is like the difference between shooting a bullet...and throwing it.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

DLL Hell - redux?

October 17, 2003 Comment on this post [1] Posted in NUnit | Nant | Bugs
Sponsored By

Patrick Cauldwell said something very wise today at work.  Here's the gist:

Sure, there's no more DLL Hell for the end user.  It's that they've made it hell for the developer.

It was immediately funny, but a few hours later, it was profoundly true. 

He and I are working on a really cool subsystem for our developers that offers a them clean SOA

As an aside, it also uses NAnt 0.8.4 for its builds.  I know I said I was doing command-line builds with DevEnv, but both Patrick and Chris Kinsman insisted I give it another look.  I was HUGE into NAnt a year ago, but got lazy and floated away.  I'm back with a vengance.  The mess of -contribs and bugs is gone and it's fantastic.  It includes a whole series of great new Tasks.  My favorites are foreach, nunit2 and the invaluable solution task.  I'm also using nunit2report which is great, but needs to support multiple input files.

Anyway, so this build of NAnt uses and includes assemblies for log4net and NUnit 2.1.3.  I also use log4net and have referenced NUnit 2.1.4 in our project.  We automated the entire build: codegen>build>test>report>email results.  We have a bootstrapper that gets the project into an empty dir and forks to the build file that just came out of CVS.  It's gloriously command-line and marginally Rube Goldbergian. ;)

However, a few weird things happened.  First, these NAnt binaries were compiled on the 1.0 framework, but the NAnt.exe.config was set to allow it to run on Framework 1.1.  However, the lib directory for NAnt had MULTIPLE directories (clever) with different versions of log4net, NUnit, etc, in each directory (frustrating).  I didn't notice this until NAnt tried to run the tests.  NAnt loaded a non-strongly-named NUnit 2.1.3, and by the time my tests tried to request my strongly named 2.1.4 I was getting all kinds of binding errors and stuff.  Same thing happened when my non-strongly-named build of log4net (compiled on 1.1 as version 1.0.13704 something) tried to load into the process space of NAnt's version of log4net (compiled on 1.0 as version 1.0.13704 ALSO). 

Needless to say, this all sounds obvious after the fact, but I needed to sync up my versions.  Certainly I could strongly name things and GAC them, but that kind of is orthogonal to the goal of a build-anywhere-relative-paths-xcopy kind of project.  So, the easiest and safest thing to do in order to maintain my goal of minimal dependancies was to rebuild NAnt on 1.1 with my preferred minor versions of log4net and NUnit via a shared lib.

So, back to Patrick's point.  The CLR offers some amazing improvements over COM-style and LoadLibrary/GetProcAddress DLL Hells.  Truly.   We have side-by-side assemblies, the GAC, and strong naming.  However, it does put increasing logistical pressure on the developer to define appropriate policies and procedures to balance ease of development with ease of deployment. 

It takes some serious thought to plan this stuff, and arguably it's not possible to get it right the first time. Or the third.  While the underlying support is there in the CLR, certainly the complex issues around dependancy management, both at compile-time and run-time are not going to be solved anytime soon with a nice Visual Studio.NET Add-In.  "File|New|Enterprise-Wide Dependancy, Version Control, and Deployment Management Project", anyone?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

Wow...iPod Update 2.1 and iTunes for Windows in one swell foop

October 17, 2003 Comment on this post [0] Posted in Musings
Sponsored By

Sweet.  Russell Beattie blogs a screenshot from iTunes for Windows.  Downloading immediately.  Plus, I need to get this new Voice Recorder accessory.  A steal at $50, since I was a biscuit away from spending $75+ on one.  This will be great for taping meetings, presentations, stand up comedy, or beat poetry. :) 

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

Wizzy wizzy wizzy

October 15, 2003 Comment on this post [1] Posted in INETA | ASP.NET | Web Services
Sponsored By

Great time tonight at the Cleveland .NET Special Interest Group.  We started at 6pm and were still going towards 9pm.  Not bad for a talk that was supposed to be ~ an hour.  Great crowd, standing room only and GREAT questions.   Covered the history of everything from The Big Bang, DNA, up till that evening.

One of the big topics o' interest was WSE 2.0, and Web Services Security.  We spent a lot of time (over 60 minutes) just talking about separating Domain Object implementation from Messages from Transport Protocol.  I showed my boss Chris Brook's great single implementation/multiple transport of a Web Service using WSE 2.0.  With a single chunk of imp code (via his "imp factory") we support multiple flavors of Web Services using ASMX, WSE 2.0 SOAP and more importantly WSE 2.0 SOAP over TCP Sockets!  Very cool.

We talked about the clear possibility that we could support SOAP over other transports, and Queuing came up often.  So, I retire to the hotel and what do I see?  $d(Synchronicity).  My friend Christian Weyer pointing us to an upcoming(?) MSMQ Transport for WSE and an existing(!) MQ Transport for WSE.  Great stuff from Kevin Hammond who today has MQSeries and who is refactoring MSMQSoapProvider for async support.  Where/When are we getting these bits?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

ASP.NET and next stop Cleveland...thanks INETA

October 14, 2003 Comment on this post [1] Posted in ASP.NET | Nant | Web Services
Sponsored By

It's 4:18 in the flippin' morning. ;)  I'm up and heading to the airport for an INETA Gig in Cleveland.  United "Easy Checkin" is "temporarily unavailable" (for the last 2 days) so I'm rushing.  I've gotten too used to printing my own boarding pass.

Still hip-deep in ASP.NET.  I'll tried to post more tonight, but lately it's been nothing but:

But, tonight I'll show some great stuff that Corillian and my CTO Chris Brooks has been doing with Web Services.

I'm off!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.