Max Guernsey, I...'s profileMax Guernsey, IIIBlogLists Tools Help

Blog


    March 31

    SPOILER ALERT: 10,000 b.c. (it was good)

    I really liked it.  I'm sure a lot of people did not.  I also bet most of the people who watched it just thought it was some adventure movie.
     
    There clearly was more to it than that...
     
    I think it was about the Big Event to which all the great monuments (the mounds, Angkor Wat, temples near the Pyramids at Giza, et cetera) allude.  Either there was an amazing coincidence, or the makers of this movie really did their research.  Watch it and look for the details.  If you've studied this subject, I think you'll enjoy this movie.
    March 29

    Oh yeah...

    ...and, if you are listening, Microsoft, can you PLEASE add a throwable interface (or something like it) so that we don't have to couple to inflexible taxonomies of exceptions?
     
    ...and one more thing... can you PLEASE make exceptions a lot faster.  I don't have any trouble with the time they take to throw but some people do and it is difficult to get them to use exceptions properly because they cannot see past the (admittedly irrelevant) cost.

    Better Generics, please

    Generics were a major step forward in C#.  Moving from C++ to C# (or Java) represents a shift to some great things; garbage collection and a rich, standardized set of tools are just two of those good things.  However, C# 1.0 (and 1.1) was significantly less expressive than C++.  Generics moved us back in the right direction.  I would argue that C# is more or less as expressive ad C++ at this point.
     
    Now we can take it one step further: let's make C# better than C++.  Let us lift the constraint of not being able to inherit from a type argument.
     
    Why?  One answer: encapsulation.  Imagine the power of being able to encapsulate a class from its superclass.  Coupling only to its behavior and the portion of its interface that your implementation needs.
     
    Here is an example of the sample that I would like to compile.
     
    // In Contract assembly
    public interface BaseInterface
    {
      string GetSomeString();
    }
     
    // In Implementation assembly
    internal class BaseClass : protected BaseInterface
    {
      protected string GetSomeString() { return "Foo"; }
    }
     
    // In Consumer assembly
    public class SubClass<T> : T where T : BaseInterface
    {
      public void OutputSomeString()
      {
        string someString = GetSomeString();
     
        Console.WriteLin(someString);
      }
    }
     
    // end
     
    ...of course, I wouldn't use it for that kind of thing.  That's a dumb example that was meant to express the behavior I want from the compiler as simply as possible.  The things which are not already handled by C# (to my limited knowledge) are in bold:
    1. The ability to implement an interface in a way that is not publicly exposed
    2. The ability to inherit from a class which implements an interface in a way that is visible to the inheritor
     
    Time was, I would implement Template Method by inheritance but no more.  At this point, I don't even do Union with inheritance, very often.  Even though we understand, now, that composition is the means by which we should combine functionality, there are still cases for this.  The reason I want it is so that I can publish a set of base classes without allowing inheritors to couple to a concrete type.  That, in and of itself, I think is the real case for inheriting from a type-parameter: the ability to break the coupling from a subclass to a superclass.
    March 28

    Rethinking Agility in Databases, Part V: Collaboration

    I just finished another article in my Rethinking Agility in Databases series...
     
     
    Check it out and let me know what you think.

    "Refactoring Data" Seminar (March 25th, 2008) Results

    Well, I would characterize my March 25th, 2008 seminar as a success in that I was not laughed out of the building.  Smile
     
    It was tough, though.  Trying to do the right amount of preparation.  I made a lot of rookie mistakes.  For instance, I apparently apologized way too many times (sorry about that).  Worse, I cut one of the attendees off in the middle of his question (you know who you are).  Hopefully, I won't be doing those things again.
     
    I should be putting on another one in about a month (toward the end of April) and I am looking for a venue I can use in Seattle to deliver this seminar.
     
    If you have a presentation-enabled room (one with a projector) on the left-side of Lake Washington and want to hear a seminar on enabling changing designs in data, please let me know via email.
    March 12

    Dodged a bullet

    This is sort of a meta-cat post.
     
    One of my cats did something that really pissed me off, yesterday.  I was so angry, I fired up Spaces and started to write a blog entry about it.  As the mouse was hovering over the "Publish entry" button, I suddenly realized: I'm about to post something on the internet about my cat.
     
    I closed the window immediately but I'm still a little shaken.  I almost was one of those people.  What would have happened if I'd clicked "publish?"  Would I have transformed into a 350lb woman who works at the library?
    March 11

    Google wants me to do what to myself?

    Right in the ass, too.
     
    Google raised my minimum bids to $10.  There does not appear to be any way to remedy the situation - except, of course, to figure out how to get a high CTR, then pay $10/click for a while.
     
    I could see the prices going up, too, - so it was not a total surprise - but there was no guidance.  The only advice they had was "improve quality" - which is super-helpful.
     
    The best part is: I would gladly have paid a consultant good money to have crafted my campaign for me, if google had offered such a service.  Now that I finally know enough to hire one and know who to hire, I'm screwed: the account is so badly broken that there appears to be no way to fix it.
     
    Way to make it easy for the small businessman, Google.

    Imagination Land, Im-aa-aaaa-aa-aaa-aa-gi-naaa-a-tion Land

     
    ...the movie.
     
    I'm curious as to what they might have added to make it worth buying instead of just buying the DVDs for the whole season when they are released.
    March 08

    Rethinking Agility in Databases, Part IV: Change

    I've written an article about embracing change in databases.  It is part IV of my rethinking agility in databases series of articles.
     
    Give it a look and tell me what you think.