On this page.... RSS 2.0 | Atom 1.0 | CDF
# Thursday, May 17, 2007

On the recommendation of a trusted co-worker who shall remain unnamed, I had installed the March CTP of Orcas on my main box because "it runs great side-by-side with 2005."  And, with the exception of a minor glitch with the db providers, everything seemed to be peachy keen.

Then of course the Beta 1 comes out and, once I finally got around to it, I decided to upgrade.  Having had experience with pre-release VS (et al) in the past, I didn't exactly expect a smooth ride, but I have to say that I wasn't prepared for it completely hosing VS 2005.

Now, it could be any one of the 10 beta/CTP extensions I have installed, or the fact that Add/Remove Programs shows 3 different editions installed.  But the Orcas readme readily admits that there will be a reckoning when you uninstall.

The remedy, they say, is to "just run repair," but I found myself unable even to repair--I'd get halfway through the repair; it'd get to VS, ask for a disc (I'd give it THE SAME ONE I USED TO INSTALL), and then it'd complain that it wasn't a valid vs_setup.msi. 

So I thought maybe it's SP1, so I created a slipstreamed SP1 VS and tried to repair it that way.  No luck there either--same result.

By that point, I was getting a tad nervous that I might be SOL, but then I decided to "go all the way" and do a full uninstall of Team Suite.  Thankfully, it at least let me uninstall, and then it successfully let me reinstall.

After finishing that third dram of Laphroig (THE best scotch!) and practicing my breathing, I was calm again and ready to crank up VS to see if everything was working.  Much to my pleasant surprise, everything seemed to work until, that is, I tried to run my Web application.

It was giving me a very strange System.Web.Compilation.CompilationLock exception on, what was it, some email provider we use on IG.com.  Thanks to Jerry Orman (and, well, Google), I took a wild stab in the dark and re-ran aspnet_regiis -ga mydomain\someuser (you didn't think I'd give away what I'm actually using, did you?).  After another (this wasn't the first thing I tried!) IISRESET, I'm no longer seeing the compilation locks (what's that knocking sound I hear?).

I'm guessing that much like .NET 1.1 SP1, the multiple uninstall/reinstall of .NET 2.0 that occurred thanks to my Orcas adventures caused some setting (likely the one referred to in Jerry's post) to get reset.  Now everything seems to be happy again. 

Oh, I reinstalled SP1 after the last reinstall of VS just to be safe, and of course, because it thinks I have three editions of VS installed, that painfully long install had to happen three times.  But since I was catching up on Andromeda Season 5 (thanks, Netflix!) with Mrs. dotNetTemplar, it wasn't so bad.

So the moral to this story?  No matter what your friends tell you, DO NOT install a beta VS on your main dev box.  It's just not worth the risk.  Ignore the siren.  Use a VM. 

Oh and the other moral is that aspnet_regiis -ga is TOTALLY WICKED!  I can now delete this bookmark and free up that brain space for garbage collection (if only my brain had a GC... ah.. more scotch!).  Yay!

P.S. I'm really not a drunk no matter what it sounds like (or what Joe Healy tells you). :)

Thursday, May 17, 2007 7:01:14 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Sunday, April 29, 2007

Essential Windows Presentation Foundation Essential Windows Presentation Foundation is precisely what the title says it is.  What more can you ask for in a book?  There are already several books on the RTM of WPF, and there are bound to be more.  The unique value this one has is that it is written by Chris Anderson, who as most know, was an instrumental architect in designing WPF, and this (along with his direct connection to the others who worked on it) gives him insight that you just otherwise can't get. 

In particular, I like that he often provides the thinking that went into particular design decisions.  He readily admits in several places that the design of this or that was hotly debated, and one can only imagine that they would be.  Having worked at a few commercial software vendors myself, I know how difficult it can be to know the best way to design a thing, and it can only be more challenging as your audience widens. 

After this, the main thing that makes the book valuable is that it is deeply conceptual.  The point of the book is not to be a reference, a recipie book, or a smattering of tutorials.  Rather, the book provides, in a coherent form, the key principles underlying the different aspects of WPF.  And by elaborating these principles, Chris establishes a strong sense that the Foundation was designed in a similarly coherent manner.

My favorite chapters were the one on Data, the one on Actions, and the Appendix.  For a solutions architect and developer, these I think provide the most interesting meat.  Of course, these types will likely want to delve into the first three chapters as well.  In fact, the only one that I'd suggest you can probably get away with skipping is the one on Visuals; I found this one pretty dry and hard to push through.  Designers and those more interested in graphics per se will likely enjoy these.

The chapter on Styles took me by surprise, but then, that's because the concept of styles in WPF is a tad surprising.  Being the language-oriented person that I am, I am a bit bothered by the choice of Style to encompass everything that you can do with styles in WPF.  Needless to say, it's not just UI goodness--devs will need to be pretty familiar with this stuff.

Other than that, my only contention is with the assertion that apps today are all about data.  This won't come as a surprise to those who've read my articles or talked to me about architecture much, but despite my philosophical objection, when it comes to UI, I'll admit that LOB apps are in fact largely about the data, i.e., largely about displaying and manipulating data since thus far, we seem to have mainly used computers to help with data storage and retrieval.  In any case, it is certainly important to have good data binding mechanisms in the UI, and I have to say, WPF nails this better than any UI tech I've bumped into thus far.

But I digress.  The book is good; I recommend it as a starting point or to complement other WPF learning resources.  It is the essentials with which you can start effectively creating WPF applications.  You'll need the docs and/or other more comprehensive books to really figure it all out, but you should read this one regardless.

Sunday, April 29, 2007 8:12:40 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, April 27, 2007
Just a one question survey. 
 
If you are evaluating a software product, what do you prefer to do:
A) Download everything, including help, samples, SDK, etc. at once, even if it may be half a gig.
B) Just download the product bits first and then either download the help, samples, SDK, etc. separately as you need them (or never download those and just use online help/samples).
C) Download a shell installer that lets you pick what you want and only downloads/installs what you pick?
D) Try out the bits in an online VM environment.
E) Other, please specify.
 
You can either just pick one or put them in order of preference.
 
Thanks in advance for any opinions!
Friday, April 27, 2007 2:31:06 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [1]  | 
# Wednesday, April 11, 2007

Christopher Alexander is a noted traditional (i.e., not software) architect who's been writing about design since well before I was born.  Some of his books, most notably A Pattern Language, are the basis of the patterns movement (for lack of a better word) in the software industry.  Anyone who writes on software patterns includes his works in their bibliographies, so I figured there must be something to it.

Not being one to trust others' reductions and paraphrasing any more than I have to, I've been wanting to dig into his work myself for some time.  I finally got around to it in early March.  I've started with Notes on the Synthesis of Form, which seems to be the first book in the series on patterns.

Apart from loving the plain black cover and white block lettering and of course the obscure sounding title, I also enjoyed the innards.  It really is interesting how similar the problems and processes of three-dimensional design and architecture are with those of software design and architecture.

I dare not reduce this work or ask you to depend upon my fuzzy recollections for a precise summary, but what follows is what I recall of the book, those things which made enough of an impression to stick with me at least these few weeks since my reading.

First, I recall the observation that we often only really know the proper form (solution) by recognizing things that are out of place (misfits).  What's interesting about this is how utterly incompatible this is with the idea of waterfall design, i.e., trying to imagine and gather all the requirements of a solution up front.  We simply lack the imagination to create solutions that fit perfectly using the waterfall approach, and the more complex the problem, the more likely this approach is  to fail.

This is in part why agile, iterative development and prototyping works better.  It enables us to create a form (a solution) and see how well it fits against the actual problem.  We can easily recognize the misfits then by comparing the prototype or iteration to the problem and make small adjustments to eliminate the misfits, ultimately synthesizing a much better-fitting form than we could ever imagine up front.

Second, I found the approach to the composition of the individual problems into the most autonomous groups (problem sets) possible to be insightful.  But the key observation here is that this composition should be based in the realities of the problems, not in the preconceived groupings that our profession has set out for us. 

For instance, rather than starting with the buckets of security, logging, exception handling, etc., you identify the actual individual problems that are in the problem domain, group them by their relative interconnectedness, and then attempt to design solutions for those groupings.  The value in this observation lies in keeping us focused on the specifics of the problem at hand rather than attempting to use a sort of one-size-fits-all approach to solving design problems. 

Further, if we take this approach, we will have more success in creating a form that fits because the groupings are along natural boundaries (i.e., areas of minimal connectedness) in the problem domain.  Thus when we create a solution for a set of problems, the chance that the solution will cause misfits in other sets is diminished.

Finally, as we identify these natural sets in the problem domains, we see recurring, like solutions (patterns) emerge that can be generalized to create a sort of rough blueprint for solving those sets of problems.  The patterns are not rote algorithms with no variation or creativity but rather are like an outline from which the author can craft the message using his or her particular genius. 

This avoids the pitfall of the one-size-fits-all solution, provides for competition and creativity, and ultimately has the best chance of enabling designers to create a system of forms that integrate harmoniously and address the actual problems at hand.

And the idea is that these sets are also hierarchical in nature such that one can create sets of sets of problems (and corresponding patterns) to create higher and higher level coherent views of extremely complex problem domains.  This, of course, fits nicely with the way we deal with problems in the software world as well (or in managing people, for that matter), dealing with problem sets and patterns all the way from enterprise application integration down to patterns governing individual instructions to a CPU (or from the C-level management team down to the team supervisors).  What can we say, hierarchies are convenient ways for us to handle complex problems in coherent ways.

So what does it all mean?  Well, I think it in large part validates recent developments in the industry.  From agile development (including test-driven design) to domain-driven design to, of course, the patterns movement itself.  We're seeing the gradual popular realization of the principles discussed in this book. 

It means that if we continue to explore other, more mature professions, we might just save ourselves a lot of trouble and money by learning from their mistakes and their contributions to human knowledge.  It's like avoiding a higher-level Not Invented Here Syndrome, which has long-plagued our industry.  We're a bunch of smart people, but that doesn't mean we have to solve every problem, again!  Why not focus on the problems that have yet to be solved?  It makes no more sense for a developer to create his own custom grid control than it does for our industry to try to rediscover the nature of designing solutions to complex problems.

It also means that we have a lot of work to do yet in terms of discovering, cataloguing, and actually using patterns at all levels of software design, not for the sake of using patterns but, again, for the sake of focusing on problems that have yet to be solved.  I look forward to continuing reading The Timeless Way of Building and to the continued improvements of our profession.

Wednesday, April 11, 2007 11:27:33 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 

Years ago, not long after XP was release (it's weird saying that), I found my computer slowing down noticeably, so I went on the hunt for a better than in-the-box defragmenter.  I don't recall how, but I came across Diskeeper.  So I tried it, and voila, I noticed an immediate improvement. 

Ever since, I've been sold on using Diskeeper, and I stuck with v7 until this year.  Both Executive Software (DK's maker) and Raxco (makers of PerfectDisk) were kind enough to give me copies of their latest version.

Right now, I'm using PerfectDisk on this laptop, but on my two other in-service machines I'm using Diskeeper.  It's hard to say if either defrags better than the other.  I imagine they both do about as well, though I dare say each has things to recommend it on that front.  I don't have the time or resources to do any kind of benchmarking between the two.

That said, I find I like Diskeeper better.  Maybe it's because I've used them for so long, and to be honest, PerfectDisk (a trial version a year or so ago) killed my external USB hard drive (maybe it was on its way out, but it definitely died after my attempt to defrag it).  I've not seen similar issues with my current version of PerfectDisk, so I can't say if it was or wasn't the fault of the software.

As for Diskeeper, I like the new UI in 2007; I'm a sucker for attractive UI.  I also like what they've dubbed "InvisiTasking."  It runs all the time and really doesn't interfere with my day-to-day activities, and on my laptops in particular, it's nice not worrying about keeping them on overnight. 

It took me a while to trust it--I'd grown so used to scheduling, and I don't want anything interfering with my perf.  But I haven't noticed it interfering, certainly not as much as, say, the MS desktop search indexer.  MS could learn something from Diskeeper in terms of how to actually run in the background.

Oh and it works great on Vista from what I can tell so far.  Smooth install and no issues with UAC and the like.

The problem with regularly using a defrag tool is that it's hard to say if it is really helping.  After my first experience, I've taken it on faith, but Diskeeper has a nice history log that shows the fragmentation history, and I can see a correlation on days when, e.g., I've installed or uninstalled a Visual Studio CTP.  So I think there must be something to it; I certainly can't complain about my system performance noticeably degrading over time like it did when I wasn't using a defragmenter.

Anyways, if you're looking for a defrag utility, I would actually recommend Diskeeper. I'm no file system expert, nor have I created control groups to objectively test anything.  But I do think it helps, and I like the latest version's UI.  So take it for what it's worth. :)

Wednesday, April 11, 2007 9:30:29 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [1]  | 
# Thursday, March 1, 2007

Don't forget!  This Saturday is NYC Code Camp III!  Unfortunately, I won't be able to make it as I'm helping to prepare for our upcoming 2007 Volume 1 launch next week.  We've got some great stuff in the works from the User Experience Group, so keep an eye out for it. :)

Thursday, March 1, 2007 11:39:10 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  | 
# Saturday, February 24, 2007

In the current/upcoming CoDe Magazine is an opinion piece I wrote that talks about one potential way we could move forward in terms of how we develop software.  Essentially, I think we are at or near a point where we can better model and thus better design business software to reflect the reality of the business, chiefly in terms of focusing more explicitly on workflow and process and less on the data and even, to some extent, on the objects.  More specifically, it discusses a different approach to validation that is very process-centric and shares some ideas on how it might be achieved using currently-released technology.

I do want to attempt to implement it, but I have not afforded myself the time to do so yet.  These days I find I have so little time of my own what with three young kids and Mrs. dotNetTemplar and all the great work we're doing at Infragistics.  So if someone else thinks it's an interesting idea and has the time to try it out, please let me know how it goes.  If anyone has any further thoughts on it, please share here either in a comment or via email.  The article is definitely not intended to be pedagogical but rather dialectical--I want to stimulate a discussion with others in this field who are interested.  So please, blog or comment or email!  Tell me I'm wrong; tell me I'm crazy; tell me "duh!", or whatever you think.

Saturday, February 24, 2007 9:48:15 PM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, February 5, 2007

In case you haven't heard, the NYC code camp is coming up here next month on March 3rd.  As usual with code camps, everyone gets a chance to share their knowledge, and NYC is no different.  You can read the call for speakers and see that they're pretty much totally open for content in two different formats (chalk talk and presentation).

I'm thinking about submitting a chalk talk on architectural and development approaches.  It seems to me these days that there are numerous ways to tackle designing applications (data-driven, object thinking, test-driven, scenario-driven, etc.), and I'd be really interested in getting in a room with other experienced devs and architects to talk about experiences with each in an effort to learn from each other.

If a chalk talk like this sounds interesting (and you'd come to NYC code camp to discuss), please let me know by comment or email.  Ideally, I'd like to get at least one other host/moderator besides myself who maybe prefers a different approach than I do.  And to qualify that, my current inclinations are towards object thinking and what I call process-driven, which I'd say is like scenario-driven on steroids.  (If all goes as planned, I have an opinion piece on that coming out in the next edition of CoDe Magazine.)  It'd be fun to get together and hash it out.

Monday, February 5, 2007 10:31:20 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, January 19, 2007

I've had a few people express some concern/difficulty with upgrading my .NET Service Manager (a.k.a., The Perfect Service) to CLR 2.0.  So, while I can make no guarantees, I'm providing a 2.0 (VS 2005) version of the solution here for you to try.  Hope it helps!

Download the Perfect Service for VS 2005/CLR 2.0

Friday, January 19, 2007 11:45:14 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  | 

Disclaimer
The opinions expressed herein are solely my own personal opinions, founded or unfounded, rational or not, and you can quote me on that.

Thanks to the good folks at dasBlog!

Copyright © 2020 J. Ambrose Little