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

The blogged wandering of Robert W. Anderson

And it is Windows 8!

Reading the news on an unplanned overnight in Houston, I see that Microsoft is sticking with “Windows 8” as the name of the next Windows client.

I can only imagine there was some heated debate on whether to give it an evocative name or stick with a sequence of numbers. I’m glad the sequence won out, even if just for now.

I much prefer the “8” and then, I hope “9”, etc. I don’t really care that these are names and not version numbers, but I do care that there they make sense to customers and partners alike.

Plus all the evocative names start sounding like brands of cars.

I just came back from Costa Rica, and I swear I saw someone driving a Windows Azule. 😉

Tags: ,

Thoughts on Windows 8

Here are various thoughts I have about Windows 8:

On the name:

  • I hope this “codename Windows 8” stuff is just a joke.  Just call it Windows 8.  Every other OS that I can think of has first and foremost a number associated with it.  In fact, I think this must just be a joke, because Microsoft is more and more coming around to the “Windows” name as the brand.  Calling it Windows Flambe or Windows Azule or Windows Enchilada doesn’t help with the brand.  8.
  • Now, of course, this ignores the fact that Windows 7 is a name, not a version.  So implicit in my plea for Windows 8 is that it actually be version 8, not just named 8.  Sorry if that is confusing, but I’m not the one who decided that Windows version 6.1 would be called Windows 7.

On the new interface:

  • Looks kind of interesting, but I’m concerned about the “one interface to rule them all” approach.  Remind anyone of the original Windows Mobile?  Just a small form-factor Windows machine with Start menu.  That seemed logical, but it turned out that it was nearly unusable.  The Windows Phone 7 Metro UI is pretty cool for a phone.  It would work well for a tablet.  It seems wierd for a desktop/laptop, but maybe not.
  • The bigger problem is that I hope Microsoft gets that standard Windows applications don’t become productive tablet applications with the addition of touch.  I have a convertible laptop.  It would be interesting to have Metro on it, but that will only solve one piece of what makes it nearly unusable in tablet form.

On Silverlight:

  • So, unlike Windows Phone 7, Windows 8 won’t use Silverlight for the Metro UI.  This isn’t surprising.  Microsoft has eschewed .NET for core Windows development from day 1.  OK, from day 2, because on day 1 they said .NET would be the new Windows API.  It never happened.  And this is just another indication that it never will.
  • That said, I think it makes total sense for them to use HTML 5 and not Silverlight for Windows.
  • This begs the question: if HTML 5 and JavaScript are good for Windows 8, then how long until these replace Silverlight for Windows Phone?
  • Which begs another (future) question: what will Silverlight be good for then?

A little snarky, but I’m feeling snarky today.

Tags: , , , ,

#PDC10 Keynote Roundup

PDCs used to be something special, only reserved for big announcements or trends for Microsoft / Developers.  Of course, they used to be bigger too – regardless of Ballmer’s calling this the biggest PDC ever.  Holding it in Redmond, keeping it down to two days, limiting the attendees to 1000 (or so?) are all indicative of this PDC change. Will it be permanent?  Who knows, but I do wonder why they held it now.

Ray Ozzie was sorely missed in the keynote.  I can’t help but wonder if this PDC was put on just to show that Microsoft is still developer focused even with Mr. Ozzie’s departure.  Ballmer did a fine job this morning, but without Bill Gates and now no Ozzie, it doesn’t feel the same.

Anyway, in terms of the announcements (i.e., the “reveals”), not too much and nothing I would say is truly big.

There are lots of announcements though, but mostly they are incremental additions to existing products (e.g., all the new Azure enhancements) or the completion of initiatives that have been in process for years (e.g., Dallas).

All together the announcements show terrific strides for the Azure platform making it all the more compelling.

Windows Mobile 7 is also pretty cool.  I don’t know I’ll every use it, but I can see why a lot of people will.  I think they’ll have a homerun here.

Here is a live view on my PDC10 tweets:


Tags: , , , , , ,

Going to PDC10?

RegisterPDC10 is coming up in late October. I signed up for it knowing it was Azure-centric, but I am glad to see that there is also a .NET track.  I hope this will include non-Azure server side technologies (e.g., EF, AppFabric for Windows Server and the like). Of course these other pieces all have their place (or counterparts) in Azure, but I don’t think I’ll be using Azure directly over the next year.

PDC’s are quite valuable to attend (access to Microsoft product teams, exposure to their roadmap, opportunity for light-bulb” moments, etc).  That said, I may decide not to go after the session list is released – a simple balancing of priorities.

Anyway, I’ll likely keep my registration – I would actually love it if Microsoft could change my plans about Azure this October.

Are you going? Or not? If so, please share your reasons.

Tags: , , ,

CA2204 is broken

CA2204: Literals should be spelled correctly (docs here).

I agree, but it doesn’t work.

At least not with compound words.  If you are authoring a reusable class library, you are bound to have compound words in literal strings.  Do yourself a favor and turn off the warning.

I had to search around to get this acknowledged, and finally found it on Microsoft Connect here

Tags: , , ,

IronPython and Digipede Network 2.2

. . . or IronPython-ipede (Part II).

deatle2py22I have been playing with IronPython a little.  With the release of Digipede Network 2.2, I am now able to post the sample I wrote.  It shows how to distribute IronPython objects on the Digipede Network.  You can find it on the Digipede community site.  See the posting there for details and download instructions.

The sample uses IronPython 2.0.1 and the included version of the Microsoft Dynamic Language Runtime (DLR).  While I focused on IronPython in this sample, it would be pretty easy to expand it to support other DLR-based languages.

Comments welcome.  I am specifically interested in feedback on DLR integration and initializing ScriptScope objects for each worker thread.  It seems that I should be able to do some of this only once at global scope.

By the way, one thing I like about this sample is that it shows how to keep user code completely de-coupled from the Digipede Network while still taking advantage of our deployment and payload distribution model.  This has always been supported by the Digipede Network, and this makes a good example.

Tags: , , , ,

NDepend is a must-have

image Some time ago I took a quick look at Patrick Smacchia’s NDepend.  While I was impressed with it, I never took the time to dive into it.  Recently, I took another look to see if it could help inform some refactoring of the Digipede Agent. 

If you aren’t familiar with it, NDepend is a static analysis tool that allows you to dive deeply into your code base.   Its feature list is truly truly impressive. Here are a few things that stand out for me:

  • The Code Query Language (CQL) allowing SQL-like queries of your code base, with a set of pre-canned queries targeting code quality, design, naming conventions, and much more.
  • A visual tool with dependency graphs and matrices and more
  • Ability to compare between different runs of the same project – at an incredible level.
  • Of course, A command-line tool for incorporation into your build process.

I loaded up the Digipede Agent assemblies and – kind of like a kid in a candy store – I found myself heading off in 10 different directions at once.  My thought process went kind of like this:

  • Wow, look at these matrices and graphs, and all these CQL queries. 
  • This is really cool to have this level of information available with build integration!
  • Wow, there sure are a lot of warnings here. 
  • Let’s fix them!  Wait, let’s prioritize them and customize them and, etc.

(The experience reminds me of when I started using FxCop.)

I highly recommend this software . . .

  1. To help you make informed refactoring decisions; and
  2. to add design and code-quality criteria (and enforcement) into your build process.

So, why do I say this is a “must-have” tool?  Because code quality is not a nice-to-have.  Quality reduces maintenance and support costs and allows you to spend your time and money on more profitable endeavors.

Go buy it.

BTW: I would like to post some of the results I’ve gotten with the Digipede Agent, but I’m not ready to share that yet. 

Tags: , ,

IronPython-ipede (Part I)

I have been taking a closer look at IronPython for a prospective customer.  Never being happy with “shoulds”, I am going to show how to distribute IronPython objects on the Digipede Network.

The first thing I did get our old Python sample running in IronPython.  This was the first user-contributed sample (thanks to Sean True).  That sample (see it here) uses Python COM libraries to invoke a job with the Digipede Network COM APIs.  This didn’t submit objects, just executed a command-line application.

I’m happy to say that the code required very little modification to run under IronPython.  The only difference is in the syntax of the “import” commands.  Kudos to the IronPython team.

I’ll post the working code once I get a little farther.

Next step: distribute IronPython objects.  Fairly straightforward, but I’ll write a reusable C# Executive to load the IronPython class definition.

Tags: , ,

Perils of #define

A couple of years ago, I wrote Three deficiencies in the C# preprocessor.  Those issues still exist, but a good thing about C# is you don’t get the following problem . . .

I’m working on a project for a customer that includes upgrading a VC++ 6.0 DLL to VC++ 2008.  There are some good resources on MSDN for breaking changes (for a starting point, see  Of course, I didn’t start there, I started by just trying it.  Pretty quickly I came across some of the breaking changes related to STL (specifically that iterators cannot be treated as pointers).

But I also had a pretty bewildering problem.  Hundreds of the following errors:

error C2371: 'std::tr1::placeholders::ks' : redefinition; different basic types 

The source of the error was C:\Program Files\Microsoft Visual Studio 9.0\VC\include\xxbind1, line 298. Looking there, I found:

        namespace placeholders {    // placeholders
static _Ph<_NARGS> _CLASS_NAME(_);
        }    // namespace placeholders

Doing some investigation I found that xxbind1 is related to the TR1 extensions to the Standard Library.  The errors didn’t help me figure out where my code was including this file, so using the process of elimination (and the trusty binary search), I found that excluding the STL map header (i.e., <map>) solved this problem.  Not an option, though, since the code in question relies on stl::map.

So, I tried several other avenues to figure out what I was doing wrong.  While scouring all the application header files leading up to this include, I found the following line:

#define _    ks._

I thought, “wow, that looks awfully general for a preprocessor constant in the main internal header file”.  Going back to the code in xxbind1, now that error makes sense.

Removed it, and everything is fine. 

Arbitrary string-replacement before compilation is a powerful thing, but it can allow seemingly unrelated and unintended havoc.

Tags: , ,

Microsoft Windows Azure

imageMicrosoft’s long awaited cloud platform has finally been unveiled here at PDC 2008.  Late to the Internet, Microsoft hit it hard.  Late to the cloud, Microsoft is doing the same with Windows Azure.  Happily, this will put an end to all the guessing about what Zurich, Red Dog,, SSDS, Live Mesh, etc., actually are.  

Of course, now begins the discussion of how all these pieces fit together.  

This is not a simple approach like Amazon’s EC2 or Google App Engine.  Not to trivialize either, but they are certainly easier to understand.  Try explaining them to the proverbial grandmother — no problem, especially if you leave out virtualization and pythons 😉  (preemptive comment: I know AWS is much more than EC2 and that bigger and better things are coming from Google).

Regardless, the Microsoft Azure is multi-faceted.  In typical Microsoft fashion, there is a lot for a developer to choose from:

  • Azure Storage, Management, and Compute.  Run WCF/ASP.NET based services, with work queues and data storage.
  • Microsoft .NET Services, nee (wrote about here).  This gives you an Internet Service Bus, Access Control, and Workflow Services.  Messages and workflow in the cloud connecting other cloud and enterprise offerings.  Very big deal.
  • Microsoft SQL Services, nee SQL Server Data Services or SSDS.  Eventually a relational model in the sky, currently not too different from Azure Storage.
  • Live Services: Not too much detail on this today, but this is clearly what was “Live Mesh”: a rich synchronization framework, “live operating environment” for writing applications to across the Web and on user’s devices. 
  • Windows Live (Live Office, Live Sharepoint, Live Dynamics CRM, etc). In-cloud applications extensible by partners and users with in-cloud and in-premises solutions.

It all does fit together, and will be of immediate value to developers.  As Marc Jacobs of Lab49 said to me afterward,

We could make use of all of these services today.

Damned straight.  It is the openness of this platform, the ability of developers to mix and match the different components, and to do it between the cloud and in-premises solutions that makes this such a winner. 

This last point is an important one.  Microsoft is in a unique position to help enterprise IT bridge to the cloud.  While I don’t think Amazon and Google will cede that market to Microsoft, their current offerings aren’t a natural fit. 

Taking this all together — not forgetting Microsoft’s leading developer productivity story — it looks like a home run to me.

Tags: , , , , , ,

Next entries »