Monday, October 29, 2007

House without Halls (an Anti Pattern parable)


Imagine you are an architect building a house.

First, you go to one builder and you ask him (or her) to build you a kitchen, you describe in adequate detail the cabinets you want and what kind of sink, stove, etc.

Next, you go to another builder and ask for a living room. And then to another builder for a bathroom, and another builder for a bedroom, etc.

All of the builders go off into separate shops and build these rooms, then they bring them back to you. And you can just push them together into a house. Right?

You quickly discover that there is no way to go from one room to the next, since only one door was needed to build each room. You find that you can travel between the rooms by going through the windows, but this becomes confusing when you have guests, since there is no common and predictable way for people to flow through the house. You don't know which room to wait in for your guests to arrive, and if they have come into a different room then you, you have to wander around, going in and out of windows, until you find them. Not having a clear point of entry for the house has made any opening into the house as likely an entrance as the next one.

You described to each builder exactly what you wanted in each room, and how many windows you wanted, but you didn't specify how large each room should be, how it should be shaped, or how the windows should be placed. Each room is built from the inside-out rather then from the outside-in. So, without considered edges, each room is a haphazard polygon and you are forced to fit rooms together by complimentary shape rather then by function. So, after you have prepared dinner in the kitchen, you have to carry it out the window, around the outside of a quarter of the house, back into a window for the bedroom, where by a bit of luck, there is an interior facing window opening out onto the dining room (this is the short cut, you'd have to walk clear around to the other side of the house to get to the exterior facing window of the dining room).

"This isn't so bad" you tell yourself. "once it becomes part of my daily routine, I am sure I can optimize."

http://en.wikipedia.org/wiki/Anti-pattern

Friday, October 26, 2007

what's in a name?

Well, I finally did it. I am finally going to make a blog post. After almost a decade of being a web developer, and years of procrastination (and actually starting blogs and writings for blogs that I fussed with indefinitely and never made public), I will finally press the "publish" button. I promise.

I won't even preview. I'm just going to publish.

really.

Part of the problem with the web is coming up with a name. Naming something on the web is kind of like naming a pet. With the added caveat that your name has to be unique.

Sorry 'Fido''s already taken. Try again.

So, all of the obvious names get filled up fast, and the clever ones a bit faster and your left with having to come up with something really, really clever or something like "nickkolbaswebdevelopmentblog" that just screams "I wasn't clever enough to come up with a good name for my blog".

So anyway, here I am debugging massive amounts of javascript and I decide on a name.

I don't know, maybe there's a connection.

OK, here's what nullcheck means to me:

  1. It sounds like 'soundcheck'
  2. Its one of those things that you have to do, and everybody is guilty of 'forgetting' to do at least once in a while.
  3. It could be a metaphor (you decide), which appeals to my philosophical tendencies.

Alright, I am going to post this. Stay tuned for:

  1. possibly some interesting and useful information on javascript, ajax, mashups and other things I am occupying myself with
  2. insight into my life as a web developer
  3. probably a lot of bulleted lists



OK. I lied, I did preview first. Hitting publish now...