On this page.... RSS 2.0 | Atom 1.0 | CDF
# Wednesday, April 20, 2005

Hey y'all!  Check this out!  The Southern California user groups are putting on a show, a show that sounds terribly like Code Camp.  The catch?  They charge $99. Guess how much we charged for the code camp in Ft. Lauderdale?  $0.  Guess how much we'll be charging for the ones in Tampa, Jacksonville, and Tallahassee?  $0!

Kinda makes you wonder where all that money is going in SoCal...  But more importantly, it should make us thankful that we get it for free!

Just goes to show that Florida ROCKS!! :)

 

Wednesday, April 20, 2005 12:50:55 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [5]  | 

Another thing that struck me while reading the new Pope's homily was his comment about "fruit that abides."  True, he was speaking to the cardinals at the time, but I think we are all called to bear such fruit.  This reminded me of what has long been an inner dialogue of mine--whether it is more worthy to give money to the poor, for the support of the Church, or for religious artifacts (such as buildings, paintings, liturgical items, etc.).

My upbringing (evangelical Protestant) definitely tended toward the first two--money spent on surroundings such as church buildings and the like should only be pragmatic.  Yet as I explored other Protestant communions and, ultimately, the Catholic Church, I found myself drawn to the beauty of the buildings, the vestments, the art, and other religious artifacts.  I found myself amazed, imagining just how much money must have gone into these things.  And of course, those who have visited the Vatican and other great artistic and architectural treasures of the Church can only be dumbfounded by the thought of it.

In fact, not long ago I was attending a Jesuit church here in Tampa, and they were in the midst of renovating.  During that time, they were offering people the opportunity to sponsor a stained glass window in the upper portion of the nave.  These things couldn't have been more than 5'x7', and when I asked into it, the going rate was $50,000.  I was stunned.  Looking around at the much larger windows that adorn the sides of the nave, I can only imagine their cost.  Of course, they were long-since paid for, a few generations ago, so I asked about it.  I was told that some folks would mortgage their land to pay for a window in the church.  Again, I was amazed. 

Yet I could not shake my upbringing, thinking how "that money could be better used elsewhere."  So I didn't act.  Since then, I have become even more interested in the plight of the poor and convinced of my obligation to help, and the inner dialogue on this point stopped for some time. 

But now I find myself thinking about it again.  I find myself wondering about it.  True, buildings, windows, paintings, chalices, and such do not remain--they may last for many generations, but they are not eternal.  But neither does suffering remain.  Both are temporal--what is eternal, as the Holy Father points out, is the human soul.  So while it may seem more worthy, on a purely humanistic level, to give money to the poor than to invest in supporting the Church or even financing religious artifacts, I wonder which has more potential to produce fruit that abides.

Surely supporting the Church--one's parish, diocese, or the Church at large--has a much greater potential to produce fruit that abides, i.e., positive impact on human souls.  And I can say from experience that religious artifacts have a profound ability to positively affect the soul, even many souls over many generations.  So perhaps it is not so clear cut as it may seem.

Now, I'm not suggesting the cessation of support for the poor by any stretch of the imagination--Christians have a clear mandate from Christ to do so.  I am, however, suggesting that we should not be so quick to belittle, impugn, or dismiss the value of these other contributions, contributions that have a very high potential to produce fruit that abides.

Wednesday, April 20, 2005 12:44:09 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, April 19, 2005

For those of you who haven't heard, the cardinals have elected a new pope--Benedict XVI, a.k.a., Cardinal Joseph Ratzinger, another great theologian and strong Church leader.  He was previously the prefect for the Congregation for the Doctrine of the Faith and Dean of the College of Cardinals, so it seems like a natural choice.  Anyways, it'll be good to see where we go from here with him at the helm.

[Edited 24 April 2005]

It seems that there is some press coverage trying (not surprisingly) to paint a negative picture of the new pope.  I thought I'd pass along some positive coverage to balance it out: The Real Benedict XVI.

[Edited 21 April 2005]

Since I've been getting search engine hits on "habemus" and "papam," I figure I should go ahead and provide a translation (I'm assuming these folks are searching to find the meaning).  This a Latin phrase, and it means "we have a/the pope," with "habemus" meaning "we have" and "papam" meaning "pope." 

[Micro Latin Lesson]In Latin, there are no articles (a, an, or the), so you have to pick what makes sense in context when translating from Latin.  I'd say that "a" makes the most sense with the phrase above. 

Also note that "papam" is a declined form of papa, which is actually derived from the Greek "papas," meaning "father."  The pope, bishops, and priests are our spiritual fathers; hence, the pope is often called the "Holy Father," and we often call priests "father." 

In Latin, nouns have different endings (a.k.a., inflections and declensions) that signify what role the noun plays in the sentence.  "Papam" is the accusative, which more or less correlates to the direct object in English.

[Edited 20 April 2005]

I was just reading the homily given by Benedict XVI prior to the conclave.  These lines struck me so that I wanted to stick them here for a reminder and reference.

"Truth and charity coincide in Christ. In the measure that we come close to Christ, also in our life, truth and charity are fused.  Charity without truth would be blind; truth without charity would be like 'a clanging cymbal' (1 Corinthians 13:1)."

Early on in my philosophical journey, I thought that truth was the only thing that mattered--that it trumped everything, and that it should be given even if it hurts or offends.  However, as the Holy Scriptures attest (that HH Benedict reminds us above), without charity, truth is nothing.  I have found this to be profoundly true, which is why I always endeavor now to fuse charity with truth, giving charity precedence.  It is a better way to live.

Tuesday, April 19, 2005 12:50:10 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, April 15, 2005
For those of you who, like myself, have been dumbfounded by the new editions and licensing models for Visual Studio 2005 and Team Foundation Server, Rob Caron has an unbelievably easy-to-understand explanation on his blog today.  I highly recommend that anyone planning to upgrade or buy VS 2005 and/or team system products read it.
Friday, April 15, 2005 12:29:19 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, April 12, 2005

In case you haven't heard, the ASP.NET Team has done away with the proposed "code beside" model for ASP.NET.  I was recently forced to remember this when porting a Beta 1 demo to Beta 2 (well, more or less Beta 2, anyways).  I'm really glad of the change because it does indeed make moving 1.x to 2.0 much easier; it keeps a familiar programming model, and it addresses some of the annoyances of v1.x.

So I propose that we all forget that the term "code beside" was ever invented.  With the knights of the round table, let us say: "On second thought, let's not go to [CodeBeside].  It is a silly place."

Tuesday, April 12, 2005 3:06:19 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, April 8, 2005

I just ran into a problem that seems like it shouldn't be a problem, though I'm sure there's a perfectly obscure and valid reason it is.  Consider the following:

public class MyBase
{ // ...}

public class MyChild : MyBase
{ // ...}

public class Foo
{
  public static void Bar()
  {
    MyBase base = GetMyBaseFromSomewhere();
    MyChild child = (MyChild)base;
  }
}

The last line in Bar throws a System.InvalidCastException: Specified cast is not valid.  Why?  It seems to me that since we're guaranteed that MyChild has everything that MyBase has, it should become the child type lacking values only for the new fields that MyChild has defined.

I'm sure there's some completely reasonable computer sciency reason this doesn't work, such as the data is stored on the heap in a structure defined as MyBase that has no knowledge of MyChild, so it can't possibly know how to become MyChild; all the same, I think it should work.  If there is a way to work around this, I'd appreciate knowing about it.

Looks like this is another place where generics could certainly save the day.  We could specify GetMyBaseFromSomewhere<T>() where T: MyBase, new(), and then we could tell it (in the case above) that we want a MyChild instance.

Unfortunately, this app is in 1.1, so that's not an option.  As I see it, the only alternative here would be for me to define a new method like FillMyBaseFromSomewhere(MyBase base), pass a MyChild instance in, and have it populate the MyBase members on MyChild.  Or (worse), I could define a MergeFromBase method that manually copies the fields from MyBase to MyChild.  Am I missing other alternatives?  Maybe serializing as MyBase and deserializing as MyChild would work?  Anyone?

Friday, April 8, 2005 7:28:01 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [6]  | 
I was just pointed to this diagram of the ASP.NET 2 control lifecycle.  Not only is it immensely useful, it's pretty to boot!  I agree with him--every ASP.NET dev should be familiar with the control lifecycle.  It is of great help when debugging pages and designing advanced features.
Friday, April 8, 2005 1:58:24 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 

John Paul the Great

You all knew it was coming.  I simply have to say something about the passing of one of the greatest popes and men of our time.  It's tempting not to say anything just to avoid adding to the cacophony of voices talking about him (and popes in general), but since he had a personal impact on my life, I figure I should say something.

No, I'm not saying I ever met him.  When I say "personal impact," I mean that his writing was instrumental in my becoming Catholic, and I've grown fond of him over the years.  In particular, his encyclical (letter) Evangelium Vitae (The Gospel of Life) had a profound impact on my thought surrounding issues of life, specifically on the death penalty and artificial contraception.

Strangely enough, Evangelium Vitae doesn't go into the issue of artificial contraception in depth.  If I recall correctly, it really only talks about it in passing; however, it was the overall profound unity, simplicity, and depth of thought expressed by this great theologian and pastor that brought me (tentatively at first) to the other side of those two issues. 

For me, the issues of papal infallibility and artificial contraception were two key points that I had significant difficulty reconciling with in my journey towards the truth.  The former was an intellectual stumbling block; the latter held very real, practical consequences for me.

Needless to say, I've gotten past these issues.  And I'm glad of it because they were hindering me from moving on in my spiritual and intellectual journeys.  I also do believe, based on personal experience, that not practicing artificial contraception enhances the quality, longevity, and, dare I say, intimacy of marriage.  I suspect there are metaphysical implications that produce this effect, but there is also simply that you are forced to learn to know and respect each other and to patiently work with the physiological uniqueness that each person brings to the marriage.

Yet I digress...

I have nothing but admiration for the man.  On the one hand, he was criticized by ultra-conservatives (traditionalists, sede vacantists, SSPX, etc.) for being too liberal; on the other, he was criticized by the "liberals" (pro-abortion, pro-contraception, pro-womens' ordination, etc.) for being an iron-fisted dictator.  Some people even thought he was the anti-Christ.  Yet for all this, he patiently shepherded over one billion people and positively impacted many more. 

Some have said he played an integral role in the fall of communism.  He has taken great strides in rapprochement with the Eastern Orthodox, Jews, Protestants, Hindus, and even Muslims.  And in all of this he has remained true to the faith, which is a significant challenge in ecumenical and interreligious dialogue.

For myself, I felt a certain parallelism with him.  He was elected less than two months after my birth, so my life could be measured by his pontificate.  I don't know why, but that meant something.  Strange how we humans find significance in the smallest of things.  But the objective implication is that I have never known another pope, so it is strange for me to think of him as no longer leading the Church, even if I've only been a Catholic for a few years.  It's like you get to know someone you feel you've known your whole life just before they have to leave.

I can say that there is a touch of sadness I feel, yet I can't help but feel (honestly) happy for him.  As Archbishop Pell said, we are Christians--we believe that this is not the end.  I am also happy for him in that he can finally rest.  It was often hard seeing him, struggling to speak, walk, and even kneel due to his illness, especially when contrasted with the earlier video footage of him as a vibrant personality.  Yet despite all his illness and age, he was constantly on the go, constantly praying, writing, speaking, even singing, and visiting people all over the world.

In addition to his social activities, he has been truly prolific and profound in his writing.  I suspect that he will become a doctor of the Church due to his significant (and orthodox) contributions to our understanding of the faith.  I mentioned Evangelium Vitae, but there is so much more than that.  Not only has he written tomes of invaluable thought himself, he also sponsored and organized the new universal catechism, its revision, a few revisions to the missal, and much much more.

One could go on and on about the positive impact on almost every realm of human existence that he has had, and that is why I think he truly deserves the title of "magnus"--"the great."  Some men are called great because they waged many successful wars, as if killing is something to be praised, yet here is a man who is great because he spent his long life truly in the service of others, of goodness, of peace, and of life.

Requiem aeternam dona ei, Domine, et lux perpetua luceat ei.  Requiescat in pace. Amen.

Eternal rest grant unto him, Lord, and let light perpetual shine upon him.  May he rest in peace.  Amen.

Ora pro nobis, Ioannes Paulus Magnus.

Friday, April 8, 2005 12:47:50 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, April 7, 2005

I don't know about the rest of you (probably most of you aren't using custom attributes as much as I), but I find it a kludge to have to override a property definition just to override the attributes on that property.  If you think so, too, please add your voice to this suggestion for the next version of C#:

http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=b8ca2beb-c1c2-4002-b7f7-d2677d42c0fe

Thursday, April 7, 2005 9:48:25 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, April 6, 2005

It's not official quite yet, but you can go ahead and start learning ASP.NET 2.0 from the experts at the ASP.NET 2.0 Quickstarts site: http://beta.asp.net/QUICKSTART/aspnet/.

I've been told that they may be making tweaks between now and the official Beta 2 release, but don't let that stop you.  There's a lot of good content there!

Wednesday, April 6, 2005 11:44:56 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, March 31, 2005
Looks like Server 2003 SP1 went to RTM status recently (like yesterday).  As you can see in the list of Top 10 Reasons to install it, you really should seriously consider getting it ASAP for your 2003 servers.  There are some great security features they're adding. 
Thursday, March 31, 2005 10:01:09 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, March 30, 2005

I just had a strange bug pop up in this framework I've built.  It uses a number of custom attributes.  I have a base attribute and a corresponding collection.  On my collection, there's an Add method that checks to ensure the attribute hasn't already been added before adding, since ArrayList's default implementation is to allow duplicates and nulls.

I declared a type and applied a few of these attributes to different properties on the type, and yet, when I went to add them to my collection, I found that it was only adding the first attribute of a particular attribute type. 

So I looked up the docs on ArrayList.Contains to find out it uses Object.Equals in order to determine if the object is in the list.  So, on a hunch, I looked up System.Attribute, and sure enough, they override Object.Equals.  Here's a link to the help on that.  As you can see, it isn't very helpful.  It doesn't describe how it is changing the semantics of Object.Equals in any way.

So then it was time to pull out my trusty friend Reflector.  Looking at what Attribute.Equals is doing wasn't particularly helpful either because it keeps making external calls, but from what I can gather, it attempts to compare the values of all the fields on the two instances in question.  So you'd think, hey, this is a fair way to determine equality, right?

Wrong.  It doesn't work.  The two attributes I was having problems with had several differing values in their fields, yet this Equals method did not catch that.  Needless to say, this is obviously a bug.  I'd love to hear, in any case, the reasoning why Attribute overrides Equals and, in addition, why the help docs don't explain it one bit.

In the meantime, life goes on, and I had to figure out a separate implementation of Equals that'd work for my needs.  Unfortunately, as far as I can tell, there's no way to call the default Object.Equals method because, as you can see in Reflector, it will simply use objA == objB, which will only redirect you to the most overridden implementation. 

So since I couldn't compare references themselves, which is what I would prefer, I decided to just use two of my properties that were sufficient to meaningfully give the attributes separate identities. 

"Sure," you might say, "you should always do this."  But most of the time I don't see the point; it is often more confusing to do so because, apart from System.String, developers expect reference types to compare equality based on references not values, especially when dealing with custom domain types. 

So I'd say it's generally a bad idea to override Equals unless you really need to because, once you do that, you should also override GetHashCode and, at that point, you may as well just toss the computer out the window and give all your money to charity.  It's just a lot of (usually) unnecessary work that can actually cause confusion and introduce unexpected bugs into your apps.

Anyways, to bring this to a close, if anyone can explain the rationale behind what Attribute is doing, I'd appreciate it.  And if any MS BCL or corlib guys read this, please update the docs on Attribute.Equals to be more meaningful.

Wednesday, March 30, 2005 3:35:39 PM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, March 29, 2005

http://lab.msdn.microsoft.com/ProductFeedback/viewFeedback.aspx?FeedbackId=dd8d277a-89b8-4e80-9e65-bac1c5279f55

To summarize, I'm being told that having the component designer break every time you double-click on a class that inherits from an abstract class is okay.  The absurdity of it is overwhelming.  Just show me the code! :)

Tuesday, March 29, 2005 9:24:51 PM (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 © 2019 J. Ambrose Little