Expert Texture Home Contact me About Subscribe Digipede Connect on LinkedIn rwandering on Twitter rwandering on FriendFeed

rwandering.net

The blogged wandering of Robert W. Anderson

Journey to .NET 2.0

After some discussion about the timing of a move to .NET 2.0/VS2005, we have decided to take the plunge and natively build for .NET 2.0 for (a currently planned) release in November.  The main reason we have delayed in this decision is that we need to continue supporting current and prospective customers who, for various reasons, are not ready to move from .NET 1.1.

 

There are a couple of things about our product that make this a bit more complicated than simply upgrading all of our VS2003 projects.:

 

1.      We offer a .NET API to our product.  Since we are committed to supporting .NET 1.1, we will have to continue maintaining a 1.1 version of the API’s main assembly.

2.      The Digipede Network can instantiate distributed objects, serialize them, and return them to the caller of the API.  If the caller is using the .NET 1.1 CLR then the serializing assembly cannot be running in a newer CLR; otherwise, deserialization errors will occur. To solve this problem we need to select the proper CLR based on characteristics of the caller (or, more practically, on configurable requirements).

 

These details are worked out (and basically functional), so what is left is integrating the new tools into development, build, and test.  We have already tested it all against .NET 2.0, so there is little concern there.  The CLR team has done a great job on compatibility.

 

Integrating the tools is (mostly) straightforward, but includes nant, NDoc, ResHacker, FxCop, Dotfuscator, NUnit, NCover, XHEO, Infragistics, NDepend, and Resharper. 

 

Some of these are critical for our commercial release and some can be dealt with later.

 

I’ll continue to post about this port with any gotchas I come up with.

Tags: , , ,

eScience / Savas Parastaditis

Savas Parastaditis gave a talk on his White Dwarfs application and the WS-GAF work he did while at University of Newcastle.  He had the worst timeslot of anyone in the workshop: It was after dinner and we were all getting pretty tired.  The workshop had started over 12 hours before (and aside from a few breaks) was packed with content.  Anyway, Savas did a good job with his talk.  The White Dwarfs application is an interesting application that brought together existing data to help astronomers search for white dwarfs. 

 

I chatted with him for a few minutes about MEST: like many, I am eager to read his coming paper (or book?).  He has gotten me thinking about a mechanism that we use to simulate MEST-like behavior in a world where the clients are not services (nor are they assumed to be reachable from the service).  Unfortunately, I can only guess if such methods for simulation are MEST- or XEST (i.e., something else altogether).  I will blog my thoughts on this and see what Savas as to say about it.

 

 I had been in contact with the Savas before eScience and was happy to finally meet him: he is a real nice guy.

Tags: ,

eScience / Marvin Theimer

I am getting behind in my blogging: I missed the second day of the eScience event, took most of Friday off and went camping with my family.  What a beautiful weekend!

Here is the start of my (short) wrap-up to the event.

Marvin Theimer, architect for the new offering (I believe it is now called Compute Cluster Server) from the Microsoft HPC group, stood in for Kryil Faenov to talk about Microsoft’s view of the changes coming in the HPC industry.  For version 1.0, they seem to be more and more focused on what they called the “personal supercomputer.”  – an 8 or 16-node cluster in a single box complete with a dedicated head-node loaded with applications specific to a particular vertical.  Think the Apple Workgroup Cluster for Bioinformatics. 

 

I think this is a reasonable place for them to focus: there certainly is a market for this pre-packaged hardware / software solution.

 

 

Tags: ,

eScience / Patrick Hogan

Patrick Hogan showed off the work his group is doing at NASA: World Wind.  Think Virtual Earth and Google Earth packaged in a slick smart client layered with scientific data fetched from data warehouses from around the world.   Check it out here: http://worldwind.arc.nasa.gov/download.html

He really wowed the audience with: 

  • Multiple satellite views
  • USGS topographic maps
  • Place information (the kind of stuff you see on a political map)
  • Elevations in relief
  • Seismic / weather data

And more, all in a zoomable 3d view off the earth.

 

Plus a version of it is available for Windows Mobile!

 

Probably the most impressive part was that it was all done in one year by one programmer straight out of college.  That says a lot about the productivity one can achieve with the Microsoft tools (it is all .NET and DirectX).

 

Apparently the CEO of Google praised the NASA group for the accomplishment.  It took them 30 programmer years to achieve the same result.

Tags: ,

eScience / Marty Humphrey

Marty Humphrey directs the group that builds WSRF.NET.

WSRF.NET is both an alternative to the Globus reference implementation (built on Java / Tomcat) and a toolkit for developing WSRF-compatible Web services using ASP.NET.  See this paper for a good overview of WSRF/WSRF.NET (note that isn’t the purpose of this paper, but it does it just the same).

The grid-standards community owe these UV guys a big thanks for taking the standards and building an alternate implementation – further validating the standards work.  This proves (again) that the standard can be implemented, that it is functional, that it works and is not biased towards a specific language, application server, or OS.  Of course, the implementation also provides feedback into future standards efforts.

It also validates a basic tenet of our approach: .NET is a terrific platform for distributed computing. 

A great challenge for this industry is to take the excellent work done by computer scientists (and other domain experts) to solve these greatly hard problems and distill them down into something that is accessible to/by “normal” people to solve their real problems. 

The standards are definitely helping make this a reality, but the tools built on these standards will really make the difference.

Tags: , ,

Changing CLR Version with ILMerge

Here is a trick that I found while looking at ways to handle .NET 2.0 while continuing to support .NET 1.1. The obvious way to support both is to build with VS2003 and use application configuration to direct the loader to prefer .NET 2.0 if available:

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedruntime version="v2.0.50727">
      </supportedruntime><supportedruntime version="v1.1.4322">
    </supportedruntime></startup>
</configuration>

That is OK, but what if you want to bind your assembly to .NET 2.0 and you don’t have the time to re-engineer your build and release processes?

OK, that is a lot of ifs, but it occurred to me that maybe ILMerge might work. ILMerge merges multiple assemblies into one, but what if it works with a single assembly? It turns out that it does:

  ilmerge input.dll /out:output.dll

creates a new assembly that is bound to the CLR that ILMerge is running. Of course, it is stripped of its strong naming key and signcode key; so you have to deal with this seperately.  The good thing is, though, that all of your resources (both managed and Win32) are in your resulting PE.

Of course, you can use ildasm and ilasm to do this too, but it takes more steps (or at least more attention to the arguments) to get the intended result.

Tags: , ,

FileInfo behavior change in .NET 2.0 Beta 2, fixed in RC

The other night we were performing tests of the Digipede Network on .NET 2.0 Beta 2 and came across an unexpected failure. The failing code instantiated a FileInfo object with the fileName argument of a nonexistent file. Then the code read the Attributes property. This resulted in the following exception / stack trace:

Unhandled Exception: 
  System.IO.FileNotFoundException: 
  Could not find file 'xxxxx'.
  File name: 'xxxxx'
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath
      at System.IO.FileSystemInfo.get_Attributes()

The code was supposed to read Attributes only if Exists was true. This was clearly a logic error, but my first question was: “How does this ever work?” As I didn’t have time to look into it further, I just went ahead and fixed the problem.

Today I tested this code again in .NET 1.1 and found that Attributes returns a default value (all bits on) even when the file cannot be found. I looked this up in the BreakingChanges.chm (that hasn’t been updated since May) and found no reference to this change in behavior.

I decided to test it again on .NET 2.0 Beta 2 (v2.0.50215) and confirmed again that I get the above exception. This appears to be an unintentional breaking change to Beta 2.

Then I tried it with the .NET 2.0 RC (v2.0.50727, the one from the Visual Studio 2005 RC that was handed out at ). This time it worked just like it did in .NET 1.1.

So, the problem came and went.

I figure that the Beta 2 behavior was reasonable; however, the CLR team apparently (and, I think, correctly) prefers compatibility.

Here is the code sample I used to test this out:

using System;
using System.IO;

namespace FileInfoTest {
  /// 
  /// Summary description for Class1.
  /// 
    internal class FileInfoTest {
    /// 
    /// The main entry point for the application.
    /// 
    [STAThread]
    private static void Main(string[] args) {
      // check arg length
      if (args.Length != 1) {
        Console.WriteLine("Usage: FileInfoTest file");
        return;
      }
      // get FileInfo
      FileInfo fileInfo = new FileInfo(args[0]);

      Console.WriteLine("Exists:\t{0}", fileInfo.Exists);
      Console.WriteLine("Directory:\t{0}", fileInfo.DirectoryName);
      Console.WriteLine("Name:\t{0}", fileInfo.Name);
      Console.WriteLine("Attributes:\t{0}", fileInfo.Attributes);
      Console.WriteLine("LastAccessTime:\t{0}", fileInfo.LastAccessTime);
      Console.WriteLine("LastWriteTime:\t{0}", fileInfo.LastWriteTime);
    }
  }
}

Tags: ,

My interview with DOC | HOLLADAY

I talked with David Holladay at  (i.e., DOC | HOLLADAY). Today he published the interview here.

I talk a bit about what Digipede does and what makes our product different from other Grid offerings out there.  I also talk a little bit about the background of my team and what got us interested in this market space.  At least I think that is what talked about — I haven’t watched the interview myself!

Tags: , ,

Dan shows off the Digipede Network

Dan’s “Grid Computing for Windows” show-off video was just posted on Channel 9.  Check out how easy it is to grid-enable your applications with the Digipede Network.

Good job, Dan!

Tags: ,

Tech @ PDC05

Microsoft is presenting on and / or announcing a lot of new technologies at PDC05 that are interesting for us:

Windows Communications Framework (was Indigo) The more integrated the communications services are with Windows and the more transports-independent they are, the better. I look forward to giving our customers more options on how our components communicate (regarding protocols, transport, and security) to best fit their specific operating environment. Of course, a lot has already been written on WCF. I look forward to hearing more about future directions.

Windows Workflow Framework and Windows Workflow Services (was Windows Orchestration Engine): while we plan the enhancements in the workflow capabilities of the Digipede Network, integrating with existing systems is always a requirement. A no-brainer for us was/is to build a BizTalk adapter. WWS looks interesting (as it looks to replace the existing BizTalk Orchestration services) – it will allow us to integrate with BizTalk 2006 as well as Office 12. This means that Microsoft has just reduced the number of integration points we need while increasing the flexibility of the entire solution. Very cool.

Windows Server Compute Cluster Edition (CCE) This product is going to make a big splash in the growing 64-bit clustering market. The work that that team is doing to improve the platform for distributed computing is all good. As Dan said in a recent post, this is a critical move. I look forward to Kyril’s talk and to catching up with him on their plans.

And more. I’ll blog on that later . . .

Tags: , , ,

« Previous entries · Next entries »