Rants, rambles, news and notes from another geek

Apparently I'm Committed

This has been a very interesting Christmas from a blogging standpoint. I typically spend a lot of time putting&nbsp_place_holder;together my “End of Year” post which means that I spend much of this week looking back at the last year of posts, thinking about what I liked and didn’t, what I said and didn’t, and what I’d like to do in the coming year. But then,&nbsp_place_holder;on Dec 20, I posted&nbsp_place_holder;“Intelligent Design Loses in Dover School District Case”.

I don’t often post about religion and stuff because of a personal philosophy I have. I call myself a “non-proselytizing athiest”. This means that I do not believe in a higher being and that I don’t try to convert people to my way of thinking. This is consistent with my libertarian (small L) political beliefs as well. Everyone can do or believe whatever they want as long as they don’t hurt anyone else.

I was a bit nervous as I wrote that post about the Dover case, but I tried to focus on the case and not the philosophy. I mostly wanted to congratulate the team of people who worked on the case. Why? Because I believed in what they were doing.

I suppose looking back on it, that I should have expected a lot of comments, but I didn’t. I got comments and emails from people on all sides. So I decided to disable comments on that post and posted “A Few Words About This Blog, Evolutionary Biology and Personal Happiness” where I didn’t quite retract the original post, but I tried to explain that I didn’t really want to fight about it. I guess I failed.

The biggest reason I decided to stop the comments on that post was actually because I was afraid that I would offend my readers, which I didn’t want to do. Religion is a very sentitive subject for many people and as someone pointed out, my blog is generally a technical blog. Just as many of my readers feel very passionately about their beliefs, I also feel strongly about mine. So I was afraid that if I allowed the discussion (argument?) to continue, someone would get hurt. That was not something I wanted to do.

But it seems that there are people who want to talk about this. Some of the comments and emails have accused me of censorship or dogma at my closing of the comments. Some have expressed regret at having offended me. Some were angry. It seems that I ended doing exactly the opposite of what I intended. It seems that I hurt some people.

Okay. I’m adaptable. And those who know me certainly would agree that I’m opinionated and don’t back away from arguments. So I have reopened comments on that post. And I will be answering people’s comments with comments and posts of my own.

Before I begin doing that however, I want to point out that you can easily opt out of these posts and stay tuned to just my technical posts by subscribing to one of my categorized feeds. These posts (religion, intelligent design, politics, philosophy, etc.) will always be in the&nbsp_place_holder;“Opinions, Politics, Rants” category. My technical posts will always be in the “Technology” category and my Geek Notes periodic posts will always be in the “Geek Notes” category. Feel free to choose how much of this firehose you want to drink. It is up to you.

CAB Hands on Labs Now Available

Last night we finally posted the Hands on Labs for the December 2005 release of CAB. We think the labs are a great way to get up to speed on CAB and learn how to really build a composite smart client using the block.

Many apologies to those who were waiting so patiently for this release. You can download the installer here: http://www.gotdotnet.com/codegallery/releases/viewuploads.aspx?id=22f72167-af95-44ce-a6ca-f2eafbf2653c

A Few Words About This Blog, Evolutionary Biology and Personal Happiness

A few weeks ago I saw some old friends who I hadn’t seen in a while. Some of them have been reading my blog since before it was a blog. One of them said to me, “You only write about .NET and technology these days… why don’t you write about anything else anymore?” I didn’t really have a good answer, but I had noticed it myself. So I started writing a little more about me, my life, the world around me, etc. And for me, it has been refreshing. I was getting stuck in a rut and I’ve been enjoying writing about other things. Maybe I’ll even write a post in my Haiku category again soon. Who knows?

My post titled “Intelligent Design Loses in Dover School District Case” was nothing more than me congratulating a team of hard-working people whose case I believed in; a case that I think has important ramifications to our society. But as always happens when the topic is religion or politics (or both as in this case), people have come insisting on arguing the creationist case and quoting verse. Oh well..

The first commenter quoted the bible. “Paul, the bondservant of Jesus Christ” wrote:

For the invisible things of him from the creation of the world are clearly seen, being understood by the things that are made, even his eternal power and Godhead; so that they are without excuse: Because that, when they knew God, they glorified him not as God, neither were thankful; but became vain in their imaginations, and their foolish heart was darkened. Professing themselves to be wise, they became fools, and changed the glory of the uncorruptible God into an image made like to corruptible man, and to birds, and fourfooted beasts, and creeping things.

Our commenter is either St. Paul the apostle come back from the dead to comment on my blog, or just a plagiarist quoting Romans 1:20 and trying take credit for it. Other readers, however, wanted to argue. As an example consider this comment:

“FACT: evolution theory cannot explain a lot of things happening around us. In fact, life and everything around us, is so complicated, that still many questions can be asked. We already know however, that the evolution theory isn’t the answer.


While it’s a fact, proven, etc, that evolution cannot be the correct answer, even though it seems to go a far way.”

As a scientist and a philosopher, I am excited about these kinds of statements. Wow. You have found evidence that proves that evolutionary theory&nbsp_place_holder;is wrong? That is exciting. I would love to see those references. All I want is to have a better understanding of the world around me, so I’ll take any scientific evidence you’ve got. But there won’t be any arguments that stand up to the standards of science.

But&nbsp_place_holder;let me be clear about what I believe: I believe that the modern theories of evolutionary biology are correct. I believe they are facts.

Fact means, “the truth or actual existence of something, as opposed to the supposition of something or a belief about something”. Notice that the definition of the word fact includes the idea that there is evidence to support it. Evolution has countless experimental and empirical studies to support it. I suppose I could spend a few hours digging up links to study after study, but I’m not going to.

You see, I don’t think there is actually any point in doing that. Why? First of all, there are lots of other sites that do this much better than I ever could. But more importantly, in my experience people who disagree with evolutionary biology aren’t going to be persuaded. In fact, I don’t want to try to persuade them. If they want to actually do the research and find the information, it isn’t hard. Grab your favorite search engine and look it up. Go to the library. Or don’t. Keep believing what you believe. I don’t care. All I care about is that people are happy with themselves. If it makes you happy to believe in creationism, great. I don’t. No biggie. Be happy. Please.

If you really want to argue evolutionary biology, I would suggest that you visit any of the forums for such things. There are newsgroups, web forums, mailing lists, etc. that are much better suited to this topic. But let me be clear, this is my blog and I will write about things that interest me. Sometimes these things will be religious. Sometimes they will be political. Sometimes they will be about my family. Sometimes they will be about nothing. I’m not going to apologize for this.

This blog is mine and it is about me. I don’t go to creationists blogs and attack their beliefs. I would appreciate the same consideration here.


PS. For what its worth, I’ve closed the comments on that post. If you really think you can prove Intelligent Design, get it published in Nature. It will be much more effective for both of us.

PPS. If you are only interested in my technology posts, then I would suggest you subscribe to my Technology feed (rss) or my Geek Notes feed (rss) and not the main feed. For a full list of the available categories/feeds (and their RSS URLs), visit the Archive.

Intelligent Design Loses in Dover School District Case

Many congratulation to the team of hard working scientists,&nbsp_place_holder;lawyers and concerned citizens who successfully fought off the Intelligent Design agenda in Harrisburg, Pennsylvania.

Today, Judge John Jones III ruled in Kitzmiller et al v. Dover Area School District, a case where the non-scientific ramblings of the Intelligent Design (ID)&nbsp_place_holder;camp had successfully made it into the school district curriculum. Back in October 2004, the school district adopted this language in the biology curriculum:

“Students will be made aware of the gaps/problems in Darwin’s theory and of other theories of evolution including, but not limited to, intelligent design. Note: Origins of life is not taught.”

This is a very important ruling. Non-science nonsense like this needs to be fought at every turn. Here is an excerpt from the judge’s ruling (highlights mine):

In making this determination, we have addressed the seminal question of whether ID is science. We have concluded that it is not, and moreover that ID cannot uncouple itself from its creationist, and thus religious, antecedents.


The citizens of the Dover area were poorly served by the members of the Board who voted for the ID Policy. It is ironic that several of these individuals, who so staunchly and proudly touted their religious convictions in public, would time and again lie to cover their tracks and disguise the real purpose behind the ID Policy.

With that said, we do not question that many of the leading advocates of ID have bona fide and deeply held beliefs which drive their scholarly endeavors. Nor do we controvert that ID should continue to be studied, debated, and discussed. As stated, our conclusion today is that it is unconstitutional to teach ID as an alternative to evolution in a public school science classroom.

For more information about this case, here are some informational links:

(It is also worth noting that the citizens had already voted out the members of the school board who voted for the ID language in the curriculum and that the new board had already agreed to abide by whatever the judge decided, so it seems very unlikely that there will be an appeal.)

UPDATE: Comment re-enabled after much discussion via email and over here.

Corporate Order of Operations: Customer, Microsoft, Group, Self

Sixteen months ago, when I joined Microsoft, my good friend Scott Densmore taught me a simple creed to help me make decisions as a Microsoft employee:

Customer, Microsoft, Group, Self

Lately I’ve been finding myself explaining this to a number of people around the company and have learned that this seems to be something that most people in Microsoft haven’t heard before. This surprised me, because it is one of those simple little mental tricks that you can use to ensure that you are always focused on the right thing. I just assumed that it must have been covered during New Employee Orientation when I was napping.

I was wrong.

So let me give my take on this little rule and why I think everyone in the company (or any company for that matter) should print it out and hang it on the wall of their workspace. You will find that this rule can be applied when you have a hard decision to make, are in a discussion with someone else about what to do, or just about any time you or your team aren’t sure&nbsp_place_holder;what to do.


If you don’t start here, you may as well get a new job. This goes along with the age-old idea “the customer is always right” or the way Burger King said it, “Have it your way.”

At work when I find myself in a quandry, having a hard time making a decision, the answer should always be the one that helps Microsoft’s customers the best. Since I’m in essentially a marketing and evangelism group [1], this is generally not a hard sell when you’re in an argument. The only time I have seen this one get compromised is when two people each think they have the customer’s interests at heart, but don’t agree how to do it.

Microsoft (aka Company)

If you can’t reach resolution purely by considering the customer, you next should be thinking about what is best for the company. In my case this is Microsoft, but the actual company doesn’t matter. These are the people who sign your paycheck, so you need to be thinking about what makes them successful.

When you can’t make a decision based solely on what is best for the customer, then and only then should you take in to consideration what is best for the company. Sometimes this will create conflict when you think that perhaps you should do what is best for your company first and the customer second. Resist this temptation. Do what is right. Do what is right for the customer and everything else will fall into place.

Sometimes I have&nbsp_place_holder;found people higher up the management chain who have decided that the interests of the company trump those of the customer. That is their prerogative. It is not mine. I am a foot soldier. Senior officers much higher up the food chain are the people who’s job it is to decide hard decisions like that.

Group (aka Team, Project, Workgroup)

Suppose that in your attempt to reach conclusion on an issue, you have decided that the customer and the company are served regardless of your resolution. You still have to make a decision. What do you do?

At this point you can take into consideration the best interest of the group. Depending on the size of your company, what “group” means may be hard to decide. If you take me for example, I reside within the greater organization of Microsoft Server and Tools. Within that is MXPS which itself contains patterns & practices. Inside of p&p, I am a member of the Smart Client program and specifically the development lead for the Composite User Interface Application Block.

So which “group” am I talking about?

All of them. My experience has taught me that this outside-in approach to thinking about decision making should be continued down through each level of organization. It turns out that more often than not the best interests of all of those groups are served by the same decision, but when they aren’t, you should choose the one that affects the largest number of people.


Finally we get to self. Me. You.

This one is last for a good reason. You should never choose to serve yourself before you choose to serve others. I firmly believe that if you serve the customer, then your company, then your team then you will find that good things come to you for free.

I must admit that I get startled when I find someone who is putting themselves ahead of their team. It happens all the time. I’ve seen it happen here at Microsoft and I’ve seen it happen at every employer I’ve ever had. You might think that this would frustrate me and cause me to bail on these rules, but honestly, the opposite occurs. Why? Because I have seen consistently that those people don’t win in the long run.

Only now, after I have confirmed that I have served the best interest of everyone upstream from me is it appropriate for me to think about what is best for me. Yeah, I know this sounds like a bunch of hippy socialist crap, but actually it works out for the best.

After talking about this post with Scott yesterday, he brought up an interesting point: If you reach a point where you feel that you absolutely must put yourself ahead of the others in this list, then you are really saying that you probably need to change jobs. You need&nbsp_place_holder;to change your group, your company, or your customer so that you can get your motivations back in proper alignment. (Changing your customer might sounds like a strange idea, but really it isn’t that hard. If you were to switch from the SQL Server team to the Windows Live team, for example, you have changed customers. If you switch from a product company to a consulting company, you have changed customers. See what I mean?)

When you focus on the customer, that means that you will at all times be doing what is best for the company. After all, happy customers make profitable companies. And when the company does well, the group does well. When the team is seen as contributing to the success of the group, the team is recognized for its contribution. And when the team does well, it means that the individual does well at review time.

Review time. We had to end up there eventually. The Microsoft review system has been a hot topic ever since the anonoymous blogger known as Mini-Microsoft started a non-stop rant against the stack rank and the bell curve. Mini and others have contended that the Microsoft review system (or any one that uses stack ranks and grading on the curve) tends to encourage selfish competitive behavior. For a while I thought that this might actually be true. I’ve noticed people on occasion making selfish decisions. Choosing self over team. Not focusing on the customer.

But I have faith that management noticed the difference between people who execute this stack in the wrong direction. Selfish people tend to be very obvious within any organization. People don’t really want to work with them. They often isolate themselves as a nature of what they do. Fine. Let them. Continue to be a team player and you will do better.

We are a social species. We depend on having strong social relationships to be successful. This is why this set of guidelines resonantes so strongly with me. If you serve the people around you, you will be more successul than if you ignore them, burn your bridges and think only of yourself.

[1] Remember, patterns & practices is in the business of making it easier for developers to consume the platform. This is really just a very specialized form of marketing.

MSDN Webcast: The TDD Pairing Game (Jan-05)

Back in October, Brad Wilson and I talked at Code Camp about a way of doing TDD and Pair-Programming that I have blogged about: The TDD Pair-Programming Game.

We have now been invited to do another presentation of that as an MSDN webcast:

MSDN Architecture Webcast: Play the Test-Driven Development Pairing Game (Level 200)

Start Time: Thursday, January 05, 2006 11:00 AM (GMT-08:00) Pacific Time (US & Canada)
End Time: Thursday, January 05, 2006 12:00 PM (GMT-08:00) Pacific Time (US & Canada)

Event Description
Products: .NET Framework.
Recommended Audience: Architect.
Language: English-American

Description: Have you tried test-driven development? What about pair-programming? These two practices are often misunderstood by developers who are just starting to explore agile software development. This webcast introduces a new technique called “The TDD Pair-Programming Game,” which integrates these two practices. Learn how this approach can help you write better software and have more fun doing it.

Presenters: Peter Provost, Software Design Engineer & Brad Wilson, Software Development Engineer, Microsoft Corporation

Please join us, it will be fun.

UPDATE: I have posted the slides and code over here.

Telepottyphobia (Alternate Title: My New Pocket PC Phone)

I have a strange fear. I’ve had it for a while. I’ve had it since I bought my Motorola MPx200 SmartPhone&nbsp_place_holder;more than two years ago.

I have a fear of dropping my phone in the toilet.

It is most pronounced at work. I suspect that you know what I’m talking about. Tiny little toilet stalls. Phone on your belt clip. As you go in and turn around, there is a point in time where your expensive little phone is dangling precariously over the toilet bowl. And since this is a public place and not in a house full of women (like my house), there is no cover to stop things falling in.

Samsung i730Last week my telepottyphobia got even worse with the retirement of my Motorola MPx200 and the acquisition of my new Samsung SCH-I730. If carrying around a $300 phone was bad, carrying around a $600 phone is worse. (FWIW, I didn’t pay that much for either phone, but those are the list prices.)

But let me change focus here for a sec and talk about this phone.

This thing rocks. It is small. It does EVDO data, which gets up to 1Mb download speed. I’ve never had a phone or a small device that could pull data this fast.

It is a full blown Pocket PC, so you can do lots of things that you can’t do with a SmartPhone. It has a slide out keyboard, which despite its small size, is actually useable.

The Outlook integration is killer. I thought my SmartPhone was getting me well connected, but this is even better. Because I have the “all you can eat” data plan from Verizon, I can have it sync as much as&nbsp_place_holder;I want.

It supports BlueTooth, so I also got a Motorola HS850 headset. Unfortunately, my laptop doesn’t do BT, so I’m gonna have to get a BT dongle if I want to sync over the air.

It also supports WiFi, but with the unlimited data plan, I don’t have it turned on. (I’ve also been told it sucks the battery dry, so I’m not that unhappy about that.)

And finally, to combat my fear of hearing the plopping sound when my phone hits the water, I went ahead and bought the insurance plan offered by Verizon. Strangely, I’m still paranoid about dropping it, but at least now if (when?) it happens, I’ll be able to get a replacement phone.



P&p Live Webcast: Lessons Learned From the Warroom

We all totally forgot to blog about this before it happened, but we can at least point you to the recorded version of the talk. Here’s the abstract:

Join this patterns & practices webcast with the Enterprise Library development team to learn about their experiences doing agile development in a collaborative forum. Experts will share lessons learned, what works best, and what not to do. Hear how patterns & practices distributed teams work with contributors all over the world and the techniques they found most effective for staying together as an agile team.

Brad Wilson, Brian Button, Darrell Snow and I got together and gave an “agile talk on agility” where even though we had a slide deck of candidate topics, we bounced around instead, answering questions from the audience. It was a very fun talk for us to give and hopefully it was valuable to our audience.

You can download the WMV of this talk here.

Geek Notes 2005-12-08

Wow. It’s been almost a month since I last posted a Geek Notes. A lot has happened around here. We went to Denver for Thanksgiving. My team shipped the Composite User Interface Application Block. I moved the blog to a new server. And who can believe that it is December already?

  • MSBuild Community Tasks Project - This is probably the most exciting community thing I’ve seen in a little while. MSBuild is amazingly powerful and until now, the only library of tasks that I had found was the SDC Tasks produced by Microsoft UK. This looks like a great little project and I hope they do well.
  • Disable Caps Lock - I thought I’d blogged this already, but apparently I forgot. I hate the caps lock key and after my most recent repave, I forgot to remap the damn thing into&nbsp_place_holder;a Control key.
  • parse-textObject - Lee Holmes has posted this amazing AWK-like MSH script for parsing and manipulating strings. But my favorite part is not so much the script, but that he also shows his unit testing harness. I may have to see what kind of TDD support I can spin up for MSH scripts.
  • Snippy - Darren May found this cool little client app for creating VS2005 code snippets. And to think I’ve been doing them by hand all this timeΓǪ
  • Free Email Hosting at Live.com - Do you already own your own domain name? domains.live.com will host your email and let you access it through hotmail. For free. Pretty cool. If you want more services, I think they’re planning to offer a paid version too. [via Dare Obasanjo]
  • Real TDD with VSTS - My good friend Brian Button wrote a nice piece about the right way and the wrong way to do TDD in VSTS. Must read.