On this page.... RSS 2.0 | Atom 1.0 | CDF
# Thursday, November 2, 2006

Let me start by saying that I neither strongly adhere to nor dissent from the theory of evolution.  I figure God could easily have created a universe in which things evolve just as he could have done it in one instant and have things as they are now.

What I object to, however, is the use of science, in particular biology and genetics, to try to answer the big questions in life.  Science, biology, genetics--they're all good things that help us to understand the way things are, but they fall flat when they try to answer why humans are the way we are or, perhaps more importantly, how we should act.

There's a fairly common sentiment these days that we're just another animal.  The resultant moral implication is that we can and should just act like animals, just follow our animal instincts. 

The support for this comes from, in part, the study of our DNA (good science) and the study of primate DNA (also good science) with the observation being that hey, some really high percentage of our DNA is identical to that of apes.  Of course, the idea that we're closely related on the biological order to apes is nothing new; it's simply advances in genetics have recently (historically speaking) helped to confirm this.

In other words, you often hear (or at least I do) materialists, atheists, agnostics (i.e., non-theistic types) say things like "we're just a bunch of apes" or something along those lines.  And it seems to make sense; it has the ring of truth because science does indeed show that in many ways we're related. 

But, and it is this "but" that makes all the difference in the multiverse (or universe if you prefer), BUT we are NOT apes.  Take an ape into your home, raise him like a child, do everything you'd do if he were a human, and in the end, you still have an ape.  He is an animal not capable of higher (abstract) reasoning, that can't speak any human language, and if released into society would soon be caught and put in a zoo because he IS just an ape.  And these are just the natural characteristics--ignoring the spiritual.

Think of it this way.  What are the attributes of a triangle?  It is two-dimensional.  It is made up of straight lines.  It has corners.  Now consider a square; what are its attributes?  Is it not also two-dimensional?  Is it not also made up of straight lines and corners?  In virtually every way but one--the number of lines--triangles and squares are the same.  And yet they are NOT the same.  No sane person would say otherwise.  No matter that they are alike in many more ways than they are different--they are essentially different kinds of things.

So it is with humans and apes.  We have many similarities on the natural level, far more than differences.  But in the end, we are not apes, and only a fool or an insane or unthinking person can say that we are. 

So let's stop all this nonsense about humans being just another kind of ape.  And with the ending of such silliness, we must also end the silly suggestions that we can and should just follow our animal instincts.  No matter how alike we may be to other animals, in the end, it is our minds and souls that truly make us human and impose upon us a higher moral order, even if we like to pretend that God does not exist.

Thursday, November 2, 2006 8:21:52 PM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, October 26, 2006

Today we launched our new web site.  It was not just a simple update; we revamped the whole deal and made it Web 2.0 compliant <grin>.  If you remember our old site, I trust you'll immediately see the improvement.  Please take a minute to check it out and let me know what you think.  Also, if you run into any problems with it, please feel free to let us know.

Thursday, October 26, 2006 7:24:38 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [3]  | 
# Monday, October 23, 2006

I just spent an hour or more that I DON'T HAVE debugging a mysterious caching issue.  I suppose in some cases it might be obvious, but in this one, it was not.  To sum up, we're using an XmlDataSource control generically and setting its Data property programmatically (and using an XSL--don't know if that matters). 

Anyways, apparently the dang control defaults to "cache indefinitely" and won't refresh until the file it depends on changes.  I guess the thing is that it doesn't look for changes when you set the Data property, so it caches indefinitely to be sure.  Set EnableCaching to false, and voila, the problem is solved.

This just highlights a rule that all general APIs should follow--don't do any automatic caching.  You can't account for all the ways your customers will use your stuff, so just don't do it.  It's not hard to make them flip a bit to turn it on. 


Monday, October 23, 2006 10:39:43 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [1]  | 
# Tuesday, October 17, 2006

And overall I think it went quite well.  My Suave Sessions session was attended by a whopping ONE PERSON!  I seem to recall his name is Mark, and he runs the Ft. Worth DNUG, so kudos to him for picking a great session!  I know it wasn't sexy, but good session handling is something we should all be concerned about, certainly more so than getting an intro to DNN by the great Shaun Walker (who was presenting at the same time and whom I blame for stealing all my potential attendees).  The good news is that it's recorded and Wrox will be hosting it on their web site, so all of you folks who made the unfortunate decision not to attend can still get the session.  :)

Download the dotNetTemplar Session Management Module (for the Suave Sessions Session) - Even if you didn't see the session, you can start adding good session handling to your pages right away.  There's demo web project there to show how to use it.  If you want the demos from the presentation, let me know.

The EntLib session didn't go quite so well.  Apparently, I should really check to ensure my old demos work before the day of when I give a repeat session, he thought, embarrassed.  So I apologize again to all the troopers who toughed out the session with no running demos.  Thankfully, the core concepts could still be expressed; it just wasn't as fun as it could be.

Download the ELMAH EntLib Exception Handler/Logger - This can be used to both specify ELMAH as a custom EntLib exception handler and use EntLib for your db access in ELMAH.

To use it, configure ELMAH as usual.  If you want to use the EntLib logger, use GotDotNet.Elmah.EntLibErrorLog as the error log type instead of the standard SQL one. 

To use the custom exception handler in EntLib, you just need to choose it in the EntLib GUI by loading the ELMAH DLL and picking the GotDotNet.Elmah.ElmahEntLibExceptionHandler as the handler type.  It should look something like this in the standard config:

<add type="System.Exception, mscorlib, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  postHandlingAction="None" name="Exception">
add type="GotDotNet.Elmah.ElmahEntLibExceptionHandler, GotDotNet.Elmah, Version=2.0.50727.42, Culture=neutral, PublicKeyToken=58d6fbf09c89f721" name="Elmah EntLib Exception Handler" />

The public key token will differ, though.  I just reconditioned this for public use real quick like, so let me know if you have any issues.

Download the Slides From Both Presentations - In case you didn't get the DVD.

Other than that, I have to give some big kudos to David Walker and his team for putting the conference together.  I've spoken at a number of code camp activities, and this was definitely one of the best organized and professionally done.  I can't help but think that their not shunning sponsors (like Infragistics) helped in making it better.  While I appreciate the academic ideal of trying to keep the code camp focused on devs sharing with devs, I think it is perhaps not in the best interests of anyone to shun sponsorship.  The vendors who sponsor conferences like that have tools that are supposed to make devs lives better, so in my opinion, it only makes sense to welcome them in as long as it is done tastefully.

And no, I didn't just start thinking this now that I'm working for a vendor; you can ask Joe Healy--I was pushing for sponsors when I was helping organize the Tampa code camp.  After all, it's not like Microsoft's stuff is free, and if the conference is about using Microsoft's technologies, why limit the vendor sponsors and topics to Microsoft?  Microsoft does a lot to make software development better, and we all welcome that.  I'm just suggesting the same thinking be extended to other companies who do the same thing.

Anyways, I didn't intend to rant about that really; I mainly wanted to say that David et al did a great job.  It was good to visit my hometown again, and while I didn't make it out to Ron's Chli & Hamburgers Too for that sausage chili cheeseburger I've been missing, I still thoroughly enjoyed the visit.  Tulsa certainly has been growing its dev community, and I hope they continue to do so.

That's it.  Hope everyone's having a great day!  Sorry bout the delay in getting this up.

Tuesday, October 17, 2006 3:55:26 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Saturday, September 30, 2006

A while back, I decided I needed to add browser-specific capabilities to my web application.  While there are those who advocate using capability testing rather than browser sniffing, there is at least one good reason to prefer sniffing.  That is that you want to be sure your site works as well as possible in all browsers but you want to take advantage of capabilities only available in some. 

In itself, this is not a reason to prefer sniffing; the key, however, is that you "want to be sure," which means testing; otherwise, your stuff may or may not work, which isn't very reassuring.  If you don't have the resources to do testing in all target browsers or the time to develop Javascript workarounds based strictly on specific capability detection, then sniffing is a good alternative because it allows you to only use "advanced" functionality in the browsers that you have tested and fall back to standard functionality for the rest.  This of course assumes you have architected your stuff in such a way as to make downgrading possible and still offer fairly equivalent services in a less rich presentation.  That in itself can be challenging and is far too involved and a bit off topic for this post.

So let's just assume you can fall back.  The next question is where you do the downgrading.  You can do it in Javascript, which if you only want to alter some functionality on the client side is fine, but if you want to, say, avoid Javascript altogether or emit significantly different script based on browser, the choice is to detect on the server and act appropriately.

Thankfully, most web server technologies support browser sniffing, and ASP.NET has expanded on and improved on this with their control adapters in 2.0.  But you can still use the old browser capabilities approach.  To do this in 2.0, you simply add the special App_Browsers folder to your web site or project (if you're using WAP).  In there you just add a file with the .browser extension, and you can put in your own custom browser capabilities there.  Here's an example:


browser refID="MozillaFirefox">
capability name="supportBubblePopup" value="true" />
capability name="supportAjaxNavigation" value="true" />
browser refID="IE6to9">
capability name="supportBubblePopup" value="true" />
capability name="supportAjaxNavigation" value="true" />

That's it, if all you want to do is extend the existing browser definitions.  If you want to define new ones or to find out more about the browser schema, you can consult the MSDN docs.  Using refID just lets you reference an existing definition and extend it.  You can view existing definitions that ship with .NET in the Framework CONFIG\Browsers directory (e.g., C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers), but be sure not to modify those directly to avoid your customizations being overwritten with later patches.

Note: You might be tempted to set a default value using refID="Default" as the docs suggest, but I've confirmed that there is a bug that causes the default to actually overwrite the more specific settings.  Microsoft tells me that they have scheduled a fix for this bug and that it will be released with the next Service Pack, but if you need it sooner, you can create a support incident and get a hotfix.  So the workaround is to not use Default and have your code check against null to determine default.  It's not the nicest approach, especially when you're using a Boolean value that would be better to just parse to bool, but it's not a travesty either.

You can then test for the capability in your code like so:


.Page.Request.Browser["supportAjaxNavigation"] == "true"

and do your downgrading if need be.  Of course, if you have some serious alternative rendering that needs to occur, you should consider using control adapters (especially the PageAdapter) to avoid complicating code with lots of conditional statements.


Saturday, September 30, 2006 2:30:26 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, September 19, 2006

I don't watch the news.  I figure what's important will filter down to me through one avenue or another, and it generally does (as far as I know hehe).  Recently, Pope Benedict XVI made a comment in a university lecture that has caused quite the controversy.  Naturally, the controversy wasn't intended, and the Holy Father, numerous bishops, and other Church officials have quickly done what they can to calm the situation down.

It appears that, as is often the case in such brouhahas, words were taken out of context, causing much consternation in the Muslim world and, possibly, even some violence on its account, such as the murder of a missionary nun in Somalia.  Although I know I shouldn't, I still am dumbfounded and in disbelief when confronted with such inhumanity and evil as a group of individuals who would gun down a woman who has devoted her life to relieving ill and suffering around the world.

It does make one wonder if the words of the Byzantine Emperor that the Pope was quoting did not have some truth to them.  Looking at the startling acts of violence, inhumanity, and yes, evil, perpetrated in the name of Islam (such as 9/11, the London bombings, not to mention those in the Middle East) and those acts which have been thwarted (such as the shoe explosive, recent liquid explosives, and more that we probably don't know about), outsiders such as myself are forced to wonder if the central message of Islam is not such evil and inhuman activity.  And then a senseless and violent killing in Somalia only serves to harden such suspicion.

Yet despite all of this evidence, forgetting the unknown, countless lives tossed aside during the jihads that spread Islam across the Middle East, Africa, Turkey, and Persia in the first milennia, let us with good faith assume that the Emperor was not right (though surely he was more learned on the subject than I).  Let us assume that there is some new good that Muhammed brought to religion.  Even so, the point at issue is still a matter of lack of context.

The Holy Father was quoting the Emperor not as an endorsement or affirmation but as an illustration.  He even says that we are "astounded" at the Emperor's "brusqueness."  Pope Benedict continues, as Manuel II Paleologus reportedly does, showing that this is a hyperbole leading into a discussion about the incompatibility of violence with the nature of God (and reason).  I've read the whole text, and while it isn't immediately obvious how the consideration of the Emperor's remarks fit into the greater dialogue other than, as the Pope says, "a starting point," it does fit with the broader theme of giving reason a greater place in human affairs, both in religion and faith and in the university, which these days has tended to want to limit reason to scientific thought stemming from Cartesianism and empiricism.

I believe the parallel between the reference to Islam and the reference to the developments in modern thought is that in both reason and God are seen to be somewhat, if not wholly, incompatible.  With Islam, as His Holiness expounds, there are developments which say that faith is something other than and often in contradiction to reason; such a stance makes believing that conversion by the sword an acceptable means because reason is opposed to violence.  The Holy Father also notes similar developments by some in the modern Christian tradition, so we see that it is not simply a criticism of Islam on this count.

Similarly, the modern scientific worldview sees anything that is not mathematical or empirically observable and verifiable as suspect, subjective, or wholly false, not in line with what is perceived as "reason."  In both cases, the Holy Father is advocating a wider understanding of reason and its applicability to religion and faith--that there are valid, useful, indeed critically important modes of reason outside of the mathematical and empirical, that the mathematical and empirical depend on these, and that reason is in accord with them and with God's nature.

Thus we see a dual consideration: on the one hand, a critique of those who would push reason out of the sphere of faith and on the other those who would push faith out of the sphere of reason, leaving them as disparate spheres of life, more often than not in conflict.  This is not the Catholic (read, historically Christian) way of understanding the relationship between reason and faith, and it is a greater understanding of and appreciation for the interdependence of faith and reason that the Pope is advocating, seeking more open and rational dialogue on both fronts.

All that said, I must say that I think the point could have been made without restating the controversial quip from Manuel II, but there I think we simply see the intellectual side of the Holy Father--the university professor who curiously relates how reading a text struck him and what it made him think of.  Given the context of the address (a university lecture), this seems wholly likely.

It is highly unfortunate that this has been blown out of proportion and taken out of context, even to the point of violence.  Hopefully, Muslims will see this as an opportunity to prove the Emperor wrong and make the noise of the good in Islam louder than the noise of those who would continue to try to spread and defend Islam through violence.

Tuesday, September 19, 2006 10:27:45 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [6]  | 
# Friday, September 15, 2006

Hi all, I just wanted to spread the word about the Tulsa TechFest next month.  As some of you know, I originally hail from Tulsa, OK, and I'm glad to be going back to my home town for this conference.  I'll be doing one session on EntLib for ASP.NET (modified version of my TechEd talk) and one on professional session handling (talking about things like HTTP modules, handlers, custom controls, etc. to gracefully handle sessions in ASP.NET). 

Of course, I'm just one of many speakers who'll be presenting on a large variety of topics, not just .NET.  They'll also have vendors with lots of goodies--I know Infragistics has some neat giveaways planned.  So if you're in the region, you should definitely check it out.  It looks like it'll be the best tech event that the heartland has seen.  Kudos to David Walker and the other organizers.

Friday, September 15, 2006 12:09:19 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, September 13, 2006

I'm pleased to announce that Brendan Patrick joined clan Little on this side of the womb today at 2:29.  He's a healthy boy of 10 pounds, 5 ounces, and measures in at 21.5 inches.  Christiane (mom) is doing well with no complications.

Wish us good rest! :)

Wednesday, September 13, 2006 8:28:27 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [9]  | 

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