Mathew Nolton Blog

Software dementia unleashed...

  • Arrogance + Ignorance = A Recipe For Failure

     The other day I was reading through a bunch of different blogs and one blogger had a quote about Arrogance + Ignorance being a deadly combination. I tried later to go back and find where I read it in order to give proper credit but I could not find it.

  • More on Attribute Oriented Programming

    A couple of my posts (here and here) on AOP have sparked a little bit of a discussion that I would like to clarify.  I had a minor rant about AOP being more then Attributes + Interception (as have others) and that people in our industry who present on the subject or write about it should do so in the context of the greater body of work presented by Gregor Kiczales and team because I believe that it is causing people to think of Aspects as a superset of Attributes which just isn't the case (i have heard this from a number of people). First of all, whether or not you prefer a static model or a dynamic model. Or if your implementation is Attributes + Interception without a pointcut composition model...i have no issue with that. My point was to help evolve how we think of AOP. Not the implementation model.

  • Serializing Collections.

    When designing or using strongly-typed collection classes that are to be serialized over the wire with webservices and the xml serialization process, you should keep in mind that:

  • Measure Twice, Optimize Once; Wash, Rinse, Repeat.

    The title to the post was taken from an entry Larry Osterman http://blogs.msdn.com/LarryOsterman/archive/2004/05/03/125198.aspx. In this blog, Larry correctly points out that we should truly understand where and if we have a performance issue and if so...exactly where is the performance slow-down occurring. It's true. When I first started off in the software business, one of my first technical mentors taught me to constantly test for performance as I develop and that I should make sure I understand where any performance slow-down is before fixing it. True or false, have you ever fixed a performance problem only to find out the problem was actually somewhere else? If you haven't, you probably aren't being honest with yourself. It's a learning experience that every cowboy programmer goes though.

  • Attribute Oriented Programming != Aspect Oriented Programming

    Recently, I have been reading about various implementations of Aspect Oriented Programming, AOP. It is interesting that many in the .Net world equate attributes with aspects. This is disconcerting. Attribute Oriented Programming != Aspect Oriented Programming. I am sure many of the authors out there understand the distinction and are merely talking about a particular implementation of AOP. The issue that I have is that because of these writings many now believe that aspects are a superset of attributes. Or that Attributes + Interception=AOP. Yes, Attributes + Interception is an implementation but there are other implementations as well. If you look at the original work by Gregor Kiczales and team who came up with AOP and AspectJ, you will find that their implementation of an Aspect is quite different then the .Net Attribute. www.aspectj.org provides a great deal of information on AOP and AspectJ as does the following white-paper White Paper.