Tuesday Morning Thoughts
Some random stuff and some not so random stuff.
First, the Oral-B CrossAction Vitalizer is possibly the best damn (non-electric) toothbrush ever made. It’s comfy on the gums, it gets to the back teeth, and the handle is just right for control of pressure and angle. The “soft” bristle isn’t very soft at all, but I’ve found that it doesn’t cause any pain or damage to my gums…it’s just right.
Second, in reorganizing some of our code, I jumped headfirst into Microsoft’s Smart Client Software Factory (SCSF). While the verdict is far from conclusive, I have to say: I like it. It implements several ideas I was tossing around in my head for a Windows Forms client but is obviously much, much more well developed and thought out.
I do find it annoying that it is somewhat difficult to visualize the relationships. That is the one advantage to using an XML based object configuration system as opposed to the attribute based system used by the Composite Application UI Block that SCSF is built on: it’s quite easy to wrap your head around the relationships and see how the pieces fit simply by reading the XML. To be honest, it wouldn’t be too terribly difficult to build similar (but certainly much less refined, given the amount of time I have) facilities with Spring utilizing the dependency injection, loosely coupled events, expression evaluation, and other components of Spring.
However, I think that the entire package, including the GAX pieces make this too compelling of a package to pass up. There is surely a huge learning curve for the framework and library itself, but I think it will be made up for with the gain in development and deployment speed.
It’s kind of cool that it also supports WPF modules. I spent quite some time last night (up until 2 AM) trying to replicate some of the existing UI components that we have into WPF UIs. I think I’m starting to “get it”. Not in the sense of why XAML is great for UI developers (I’ve always preferred declarative markup), but in the sense that I’ve kind of aligned myself with some of principles of XAML (i.e. layout, grids/tables, applying styles, backgrounds, etc. – which are of course slightly different than HTML) and I can now really appreciate how much easier it will be to create snazzy UIs in the future.
While I have Expresison Blend, I found it much more constructive to actually go into the raw XAML and write it by hand (well, not to mention that I find the UI hideous and unusable or perhaps I’m just way too Adobe-ized). It was quite slow going at first, but once it clicked, it picked up very quickly.
Ultimately, however, I don’t think that I can use WPF for our next release. There seems to be some runtime instability with the current Visual Studio 2005 extensions (the November 2006 CTPs) to support WPF and WCF…I was only able to run my application once last night; subsequently, it would crash immediately. The problem was only fixed by rebooting my machine.
But in any case, there are some great SCSF resources out there. I would start from Cabpedia.com as CAB itself is really what presents the challenge in the Smart Client. Cabpedia has a list of great resources which helped me at least grasp some of the conceptual ideas behind CAB. In particular, a series of articles by Szymon Kobalczyk.