As a subscriber to First Things and Touchstone, I know that musings upon the compatibility or incompatibility of Christian faith with evolutionary theory are not in short supply. Neither, of course, are the unceasing dialectics on the truth or falsity of evolution, including all the usual suspects and alternatives. But this may come as a surprise to those who only follow these topics as flare ups occur in the national media--there are no assertions being made in these thoughtful magazines that Catholics, or any Christians, must adhere to literal creationism.

The authors writing for these magazines are well-known names in general (the Pope himself wrote a recent article, as well as Supreme Court Justice Scalia), and First Things in particular hosts some of the icons in the evolutionary debate. These aren't oddball nobodies, and I only say that to quell any imaginations that the voices in these magazines are on the sidelines--these are people of note and, in many cases, authorities in the fields upon which they're opining.

The most recent discussions have been around the feasibility of the formal notion of "intelligent design," which as I understand it revolves around arguments against chance-based evolution due to irreducible complexity in organsims, such as the eye. One may note in this that it is not an argument against all evolution, nor is it an argument for literal (seven literal days as in the biblical account) creationism. I am not going to say much more on the details of the theory because I'm not qualified and would probably get it wrong anyways. My point is simply that there are respectable Christian positions in the evolutionary debates that are not the oft-touted literalist creationism.

This came up recently for me at work. We were brainstorming ideas for visualizing something, and the idea of evolution came into play, so I tossed out, half-joking, that we should show a fish crawling out of water and turning into a monkey or something like that. Rather joltingly, a co-worker blurted out "hey, I thought you didn't believe in that," to which I, dumbfounded that my beliefs were brought up in that context but more annoyed at the misconception of my beliefs, just stared, smiled, and moved on.

Being busy like we are, I had to set it aside and just focus on what needed to be done, but now that I have the luxury to propound what I actually believe (in what I think is a proper medium and place for such exposition), let me say that Christian faith does not presuppose literal creationism. In fact, it doesn't even preclude strict evolutionary theory, biologically speaking.

This message still seems newsworthy; the popular misconception of the Christian being the ostrich with his head in the sand in regards to evolution (and science in general) is still in force, as evidenced by my co-worker's remark. This doesn't surprise me; I still recall reading the headline "Pope Says Evolution Compatible with Faith" back at university in 1996 (before I became Catholic myself). It made an impression on me because I was in fact raised in the milieu that evolution is inimical to the faith, so there is definitely some truth to the stereotype. Plus, the literal creationists tend to be the ones who make the most noise and controversy, which is likely why the stereotype exists and persists. So I have to be patient and understanding with those who hold the stereotype, but I also want to do what I can to dispel it--to make some noise of my own. Sadly, "Catholic Software Creator Says Evolution Compatible with Faith" doesn't promise to make much noise, but I can try.

As this article mentions, Catholicism has long been reconciled to the possibility of an evolutionary biological mechanism in nature. Despite the ever-popular sensationalizing of the Inquisition and the Church's treatment of Gallileo, Catholicism has a very positive view of reason and science. Philosophy and learning have ever been a bulwark of Catholic (Christian) faith.

For example, St. Justin Martyr, an early second-century Christian (as in less than 100 years after the Christian Church was founded), championed the idea that there is truth and wisdom to be found in non-Christian learning. He specifically builds on St. John the Apostle's (the disciple of Jesus and author of several New Testament books) description of Jesus as the "Word" (i.e., Logos, which is Greek for the faculty of reasoning) of God, the Word made flesh. This passage has been the basis for much deep theological reflection over the milennia, and St. Justin is just one of the earliest examples of the friendship of Christian faith and reason.

One only has to lightly peruse a book on the Fathers of the Church, the discussions and resolutions of Church councils, or a handbook on medieval scholasticism to see that from its very origins and consistently throughout its 2000-year history, Christian faith has been deeply rational and embracingly friendly to learning. The first universities were Catholic, and many of the greatest thinkers throughout Western history have been Catholic, including several of our current Supreme Court justices.

The exceptions to this friendship have occurred only when there is a perceived threat to the faith, and in those cases, it is not a fear of science per se but rather a sincere and generally well-founded concern for souls. While I think it is true that this concern was misdirected and even abused at times, the point remains that it is not a general enmity for science or learning that animates those actions we see as negative but rather an overreaching of the pastoral impulse--to protect souls at all costs, even at the cost of the body or of freedom. It is hard to understand the medieval mind on this point because our society today is different in very dramatic ways, but that particular point is subject enough for multiple books (and numerous books have indeed been written, such as Characters of the Inquisition).

The issue here is that even the sensationalist examples that are usually used to support the assertion that Christianity (and, in particular, the Catholic Church) are anti-rational, anti-science, and/or anti-learning are just not true. In fact, they're patently false, at least for Catholicism. There are some branches of Christianity, particularly the the Protestant fundamentalist ones, that may live up to the stereotype, but the vast majority of Christianity (in general) and Catholicism, specifically, embraces and has embraced learning that does not directly come from Divine Revelation.

The point at which we depart from a secular approach to learning is the point at which it becomes irreconcilable with Divine Revelation. And it is, in fact, this point which is the crux when a Christian is bound to deny some scientific theory. Evolution in particular has long been bound up with an underlying materialist philosophy, and it is this philosophy, rather than the biologicial theory of evolution, that a Christian should reject. The essential problem of the materialist evolutionary philosophy is the underlying assertion that "this is all there is," i.e., that the material world is all there is, that there is no spiritual reality and, correspondingly, no Supreme Spiritual Being (God).

The popular view of evolution is imbued with this theory, and that is why there has been (and remains to be) so much debate between Christians and non-Christians around evolution (excepting, of course, the literal creationists, who object to anything but a literal interpretation of the creation account). Those who believe in evolution are stereotypically also materialists because, theoretically, evolutionary processes free one from having to believe in a creator. If we are, after all, just the product of chance mutations over millions of years, what need have we for a God to have created us? This thinking extends into cosmology where the study of physics enables us to theorize about a universe that either always has been and/or continually recreates itself. Freed from a physical or biological need for God, those who desire to reject Him now seemingly have a scientific basis to do so.

Historically, Christians have (and rightly so to some extent) seen these scientific theories as inimical to Christian faith. The key lies in disentangling the materialist philosophy from the biological theory of evolution and from theories pertaining to the formation of the cosmos. Inasmuch as a theory does not entail the rejection of Christian faith (which does include God's creation of the cosmos, including humans), Christians are free to believe it.

In the case of evolution, if you don't read the creation account strictly literally, it is conceivable that God could have created the world and in a manner that accords with the theory of evolution, i.e., using natural mechanisms that he built into the fabric of the universe. The key moment of creation, inasmuch as man is concerned, comes with God's "breathing life" into us.

It is in fact oddly believable that God did use evolution, allowing our human form to develop until the point at which he imbued us with spiritual life. This would explain the seemingly sudden generation of civilization from what we think of as pre-history. It could allow for the development of other physically similar, human-like species that ultimately died out. The creation account certainly follows something of an evolutionary account from the creation of the cosmos, to the formation of the earth, to the growth of vegetation, to the animal life originating in the seas, then the air, then on land, and then ultimately humans whom he gave the "breath of life." He did not breathe on the other creatures that were also alive, so clearly the creationary moment for man was not the giving of physical life but of spiritual, and it is this that makes us different from the animals--our spiritual, God-like (we were made "in his image") nature.

Divine Revelation is even less specific about the creation and nature of the universe, so many of the theories about the universe that cosmology proposes are acceptable--as long as the universe can ultimately be held to be a creation of God. I think we could even say that a universe that keeps recreating itself in time could be synthesized with Christian faith because there is still room for God to have set this self re-creation in place. Even an eternal universe could be conceived of as long as the quality of "eternal" is understood to mean existing as long as time has existed. In other words, it is possible to conceive of God's eternal nature to be such that he existed prior to the creation of time, that he is "eternal" in the sense that he is outside of time so that temporal terminology and thinking doesn't apply (is absurd) when speaking of him apart from how he interacts with time as a created thing. Thus in one sense of the word "eternal" (existing as long as time has existed and continuing to exist as long as time does) the universe could be eternal without denying that God created that concept and reality of "eternal" because he himself is "eternal" in the since that he exists outside of time.

The point is not so much to theorize about what is or is not the truth in terms of the creation of the universe and man but rather to illustrate how Christians can faithfully accept what science has to offer. I should note that although Christian faith can be compatible with evolution and theories about the universe in general, we are under no compulsion to adhere to any of these particular scientific theories.

I am often amazed at what seem to be boundless extrapolations (from the specifics of dinosaurs to evolution to the creation of the universe), but I am more amazed that popular society seems to accept them all without any critical thinking. I for one remain non-committed to these theories; I retain the same healthy skepticism for them that many reserve for propositions about God.

For me, God is much more real, more verifiable than the theory of evolution or the big bang, and I also happen to think that my relationship (or lack thereof) with God has a much greater potential impact on my personal happiness (and those around me). Therefore, I think it is a far better use of my time to invest in my spiritual life than worrying about whether or not I share 97% of my genes with a chimp. Seems logical and reasonable to me. :)

To wrap things up, Christian faith is not at enmity with reason or even with material science--it cannot be--because, as St. Justin Martyr highlighted, truth is truth and can be found outside of Divine Revelation in non-Christian philosophy and the material sciences. Where there is truth, we should embrace it. Where it seems to conflict with our faith, we should strive to understand how it does not. Science, when understood correctly, can only serve to enhance our faith, for as our understanding of the amazing complexity and beauty of the material world increases, so should our amazement at and love for our Creator increase. Our faith should complement and enhance our learning. Like cocoa without sugar is bitter, so is learning without faith (Eccl. 1:18; a.k.a., "ignorance is bliss"). However, when we combine faith with our learning, we get something joyous, sweet, and delicious.

If you haven't heard about it yet, Jeffrey Palermo is throwing another Party with Palermo, one of his pre-conference bashes, at TechEd 2007. These are always a lot of fun--free food, stuff, and fun people.

This year, Infragistics is sponsoring, which means you get free food and drink on us, we'll be there to chit-chat, and of course, we'll be giving away some really cool swag.

So if you'll be in town Sunday night, you should definitely stop by and hang out for a bit. It's THE place to be on Sunday night. :)

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). :)

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.

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.

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. :)

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. :)