Why Blog?

If you're seeing this post, then my nefarious plan worked.

I had the idea of having a personal blog external to SEP after seeing that the posts and comments could not be seen by others outside of the company. Essentially it was like emailing everyone internally. More importantly, no cross-pollination with the community could happen either. It seemed like the overall value could be improved by taking a little more effort to put the ideas out there. I talked with a few people about their blogging habits and practices, and determined that this could work.

Read on →

Architecting Scalable and Usable Web Applications

Here are my notes from a Microsoft ArcReady seminar I went to in the middle of May. I went because I wanted to know more about building web applications that scale to many users. I definitely learned the basics of this, and found some references to other work as well.

At least one interesting thing that I learned was ProtoXAML, which is a way to take prototypes and make them seem a bit more flawed so that customers are more likely to give you good feedback. It was interesting to see this perspective, and might be helpful with some client interactions we have.

Read on →

Java Anti-Pattern

I was doing some Java programming today, and I noticed an anti-pattern that was in an existing code base. It went something like the following:

public Class Klass {
    ...

    public Klass(int foo, boolean flag, String s1, String s2, String s3, String s4) {
        initialize(foo, flag, s1, s2, s3, s4);
    }

    public Klass(int foo, boolean flag, String s1, String s2, String s3) {
        initialize(foo, flag, s1, s2, s3, null);
    }

    public Klass(int foo, boolean flag, String s1, String s2) {
        initialize(foo, flag, s1, s2, null, null);
    }

    public Klass(int foo, boolean flag, String s1) {
        initialize(foo, flag, s1, null, null, null);
    }

    public Klass(int foo, boolean flag) {
        initialize(foo, flag, null, null, null, null);
    }

    private initialize(int foo, boolean flag, String s1, String s2, String s3, String s4) {
        _foo = foo;
        _flag = flag;
        _s1 = s1;
        _s2 = s2;
        _s3 = s3;
        _s4 = s4;
    }

    ...
}

Immediately, my Don't Repeat Yourself sensor went off. It felt like the previous coder was essentially trying to use some default values for a method. You can do something like this in other languages, even other statically typed ones. In Ruby, it would be pretty simple:

Read on →

22 idea street

I have a variety of interests and opinions, so as you might imagine, I struggled to come up with a name that would represent my true hopes for this blog. It seems like a permanent enough thing, being on the web and all. I took an unorthodox approach to generating the name that seems to have had significant positive effects. I took all of my personal writings for the last year or so, coded up a Ruby script that would calculate and sort the word frequencies, read through the list, and then took a nap.

My subconscious worked on it for awhile, and when I woke up, I asked myself what the correct name should be. A couple of strange hazy names came to mind, and then in literally a flash of insight, '22 idea street' popped into my head. It immediately seemed correct, although I didn't necessarily understand why. I excitedly woke up and wrote it down.

After thinking about it for a few minutes, each of the parts actually represents something that is deeply important to me.

Read on →