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

Screencasts and contrasting Sun Grid

Jon Udell, lead analyst at InfoWorld, recently posted a screencast of the Sun Grid Compute Utility (Screening Room #4: The Sun grid compute utility).

I enjoy reading Mr. Udell on his blog and in InfoWorld as well as listening to him on the Gillmor Gang.  He brings together both the broad view of an industry analyst with the deep dive on the technical only achieved by a developer.  In fact, he is a developer (for example, he recently deployed metadata searching and exploring services for InfoWorld).

In the Sun Grid Utility screencast, Mr. Udell does a good job of quickly showing the major functionality of the Utility and the Compute Server project (i.e., Java APIs for communicating with the Utility).  The screencast is not too different from the webcasts we do for the Digipede Network, our distributed computing solution for the Microsoft .NET platform.  The quality of Mr. Udell’s questions in his screencast are on par with the best questions we get in our webcasts — he clearly groks distributed computing.

Sun Grid appears simple but is deceptively hard to use.  Simplicity was a primary reason we developed the Digipede Network: we don’t think distributed computing needs to be complicated.  I think we have been pretty successful at that.  Of course, I’m biased, but: stay tuned for an upcoming independent review that contrasts the Digipede Network favorably against Sun Grid on this very point.

The Digipede Network is a Windows-focused product that shares some similarities to Sun Grid (specifically Sun Grid Engine).  Here are some differences between the Digipede Network and Sun Grid:

  • We do .NET 1.1 and 2.0, as well as command-line and other stand-alone applications.
  • We have full support for COM on both the front-end and on the distributed program.
  • .NET and COM developers can serialize assemblies, data and objects into messages do be distributed for execution.
  • Our SDK and community site includes samples in many languages (C#, Python, PHP, VB6, VB Script).  We plan to put together a Java example, though honestly the demand hasn’t been that great.
  • The SDK integrates with VS2003 and VS2005, supplying developers with samples, a developer guide, API documentations, and XML schemas for Intellisense.
  • We have a Workbench that allows you to design your jobs without writing any code.
  • Our Agents are smart about data and applications.   They can cache persistent applications and move data from and to file servers and web sites (in addition to the messaging described above).
  • Applications can be configured externally.
  • Jobs can be defined through XML or programmatically.
  • We have a much richer user experience for control and monitoring of jobs through an ASP.NET Web site.
  • You don’t need Solaris 😉

If you want to see this stuff in action, sign up for one of our webinars here or go to MSDN.  They recently hosted two webinars on the Digipede Network: Object-Oriented Programming for Grid: Grid Computing for .NET and Advanced .NET Programming for Grid Computing.

And Mr. Udell, we would love to do a screencast with you, too.

Tags: , , , ,

VS2005 PowerShell Prompt

If you are like me, you use the Visual Studio Command Prompt frequently, because you need the environment that gets set up by the vcvarsall batch. I’m using the PowerShell now exclusively, but still need this environment. Just calling the batch file doesn’t get the variables set in PowerShell. Adam Barr has a good explanation and solution here (and the interesting bit below is taken from his blog and credited there to Bruce Payette).

My goal was to have these environment variables set for every instance of PowerShell. Not rocket-science, but not terribly straight forward to a newbie PowerShell user either. To do that, I needed to add a script that will get run on every invocation of PowerShell. Here is what I did.

If you don’t yet have a profile set up, then create the required directory (explanation of profile naming is here):

mkdir "$home/My Documents/WindowsPowerShell"

Open your profile (or create if it doesn’t exist):

notepad "$home/My Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1"

Paste the following into your profile:

pushd 'C:\\Program Files\\Microsoft Visual Studio 8\\vc'
cmd /c “vcvarsall.bat&set” |
foreach {
  if ($_ -match “=”) {
    $v = $_.split(“=”); set-item -force -path "ENV:\\$($v[0])"  -value "$($v[1])"
  }
}
popd

And then start a new PowerShell. Now the environment should be set properly.

Update: I fixed the path to the default profile.  Thanks to dreamlusion for pointing out that my info was pre-release and out of date.

Tags: , , ,

SQL Server 2005 FrontRunner

The Digipede Network is now certified as a SQL Server 2005 FrontRunner. Among other things, this means that we have passed the SQL Server 2005 component of the Platform Test for ISVs.
SQL_FrontRunnerStamp_CMYK.png

Thanks for the quick turnaround, Veritest and thanks to Microsoft for inviting us into the program.

Tags: , ,

Playing with PowerShell

I finally jumped into making my own PowerShell (nee Monad) CmdLets. I took the name change and, more importantly, promotion to release-candidate status, as the impetus to try it out. A rich command-line interface to the Digipede Network is on our future-list and I’m doing some prototyping now — it seemed as good a time as any.

I won’t go into what the PowerShell is, much has been written about it. I do want to commend the PowerShell team, though. I wrote a CmdLet and found how very easy and powerful their model is.

I started by writing a CmdLet to present simple job status. Turns out, the meat of the code is just this:

protected override void ProcessRecord() {
    foreach (int jobId in mJobIds) {
        WriteObject(mClient.GetJobStatus(jobId), true);
    }
}

This code goes through all of the Job IDs passed on the command-line (or from the pipe), gets JobStatusSummary objects representing their state, and writes each one to the receiving pipe. Those of you familiar with our API will recognize the DigipedeClient.GetJobStatus() method. ProcessRecord() and WriteObject() are parts of the PowerShell API.

OK, granted, there are a bunch of lines of code required to wrap around all of this, but not too many. It all took a couple of hours start to finish (including reading and grokking). The result looks like this:

PS C:\> get-job-status -credential $me -host localhost -jobid 1

IsReadOnly            : False
Collection            :
JobId                 : 1
TimeCreated           : 4/26/2006 1:10:32 PM
TimeModified          : 1/1/0001 12:00:00 AM
StatusChangeTime      : 1/1/0001 12:00:00 AM
Status                : Waiting
LastTaskTimeFetched   : 1/1/0001 12:00:00 AM
LastTaskTimeCompleted : 1/1/0001 12:00:00 AM
TaskTotal             : 100
TaskTotalAssigned     : 0
TaskTotalCompleted    : 0
TaskTotalFailed       : 0
TaskTotalActive       : 0
TaskTotalWaiting      : 100
TimeStarted           : 1/1/0001 12:00:00 AM
TimeEnded             : 1/1/0001 12:00:00 AM
EstimatedTimeEnd      : 1/1/0001 12:00:00 AM
IsFinished            : False
TaskStatusSummaries   : {}
FailureReason         : None
FailureMessage        :

Again, if you are familiar with the Digipede API, you’ll recognize this as a JobStatusSummary. I wrote zero lines of code to do this, because PowerShell uses .NET Reflection to interrogate the object directly. Of course, this can all be reformatted with built-in PowerShell commands. This is excellent — we can layer CmdLets on top of our existing APIs without having to write a bunch of formatting code.

Now I know how easy this is, the next step is to step back and look at the bigger design.

Thanks to the PowerShell team for such a cool product.

Tags: , , ,

Review of Practical .NET2 and C#2 (Coming)

I’ve started reading Practical .NET2 and C#2 with the intention of reviewing it. Even though the book is intended for beginner to intermediate programmers, I’ve already learned some things I missed while porting to .NET 2.0. When my review is done, I’ll post it as a new article.

It is written by Patrick Smacchia, author of the excellent NDepend. If you haven’t used that, go and check it out. Once our code is all Code Anaylsis-clean, I’ll probably play with using its Code-Query-Language (CQL) to enforce other standards.

Note to Patrick: I would have called it ILQL for Intermediate-Language Query Language (pronounced ill-quill) since CQL is presumably prounounced sequel. My guess is that this pronunciation match was intentional (and it is kind of cute), but in describing it to others I’ve had to call it by other names so I don’t confuse them (e.g., “not-SQL” and “code query language”).

Tags: , , ,

StreamingContext.State == Other?

I’ve been messing around with .NET Remoting recently.

I’ve noticed this in the debugger, searched around online, and now confirmed it in Rotor (as a proxy for .NET 2). Many have asked the question, but I have yet to find an answer.

Why does the default BinaryFormatter used in .NET Remoting set the State property of the StreamingContext to Other (and not Remoting)?

I’m wondering too if I can use Other as a proxy for the Remoting state (i.e., that I’ll never see Other in a non-remoting context).

Anyone know?

Tags: ,

Digipede News and Announcements

We have been getting good press at Digipede. My recent favorite is the 5-star CRN review here: Grid Computing Turns .Net Into Enterprise Powerhouse.
If you are interested in getting Digipede news straight from the horse’s mouth (as it were), subscribe to: Digipede News and Announcements.

Tags: , ,

MSDN Webcast: OOP-G

Dan, the Digipede Network Product Manager, has just announced an MSDN Webcast he’ll be doing: Introducing Object Oriented Programming for Grid (OOP-G). The event is Tuesday, April 11th @ 11:00 PDT.
This is the first of two MSDN Webcasts he has scheduled. I’m sure he’ll make them both informative and entertaining.
Go to his post (MSDN Webcast: Object Oriented Programming for Grid) for more information and a registration link.

Tags: , , , ,

Interested in ASP.NET for your startup?

A question I ask Microsoft people frequently is: what are you doing to promote your tools in the Web 2.0 world / to help SaaS startups use your technologies?
I saw two posts today that, while not answering this question, seem to me like progress:

ASP.NET 2.0 Training Center

Microsoft (and CMP and O’Reilly and Dr. Dobb’s) have rolled out the ASP.NET 2.0 Training Center. This is to help PHP / JSP / ColdFusion developers learn about .NET. This looks like a great resource for developers to learn about the capabilities of .NET. If you are a developer using one of these other technologies, check it out. There is a free copy of Visual Studio 2005 Standard in it for you if you view 3 webinars.

Obviously, this is a great tactic to get non-.NET users to see what ASP.NET has to offer — I’m sure they’ll get plenty of free-riders too 😉

I found out about this from an O’Reilly post (see ASP.Net on a Roll). According to them, ASP.NET 2.0 is gaining leverage (as measured by book sales). Good news for Microsoft and for developers. ASP.NET is really a great way to build Web sites and services. I personally much prefer this to PHP, for example. Scripting languages are fine, but I’m in the strong-typing camp. And now since ASP.NET 2.0 can recompile your code on the server, it takes away a major scripting advantage.

Microsoft Startup Zone

In Microsoft Startup Zone Launches, Don Dodge announces the new Microsoft Startup Zone, sort of a portal into Microsoft’s Emerging Business Team. This site is full of resources for startup companies. While I still would like to see a partner program for SaaS startups, this site is worth a visit if you want to see what Microsoft has to offer emerging companies.

Tags: , , , ,

Digipede presents at SDForum Windows SIG

Dan, the product manager for the Digipede Network will be giving a talk tomorrow night at SDForum on object-oriented programming for Grid (or OOP-G, as I call it).

He blogs about it here: West Coast Grid: Windows Grid: SDForum Talk Wednesday Night.

He will be talking about using the Digipede Network behind Web Services — check it out.

Tags: , , , , ,

« Previous entries · Next entries »