Friday, May 26, 2006

Root Causes

Ive been an active observer of our political system and current events for some years now. Im not an expert, I dont have all the answers; just an opinion on everything. But I've always had a nagging question, and its applies to every issue that comes up. Its a very simplistic question, and probably seems foolish to some. Why doesnt everyone think as I do? Seem stupid? Let me give you an example to make my point.

(Shamelessly snagged from Bill O'Reilly.com)
The State of California is taking action. Earlier this month, the state senate voted 22-15 to prohibit textbooks or instructional materials that "contain any matter that reflects adversely" on persons because of their ethnicity, gender, disability, nationality, sexual orientation, and religion. In addition, the proposed law would mandate textbooks include the study of "people who are lesbian, gay, bisexual, or transgender, (and who have contributed) to the economic, political, and social development of California and the United States of America ..."

Take a breath, and consider the implications. If I were a Nazi, and I read any rational history of World War 2, I would feel like it was 'reflecting adversely' on my nationality. If I were a gay man, and I read any kind of rational history of the AIDS disease, I would likely feel that it was 'reflecting adversely' on my sexual orientation. For those of you who dont know, AIDS originally flourished among homosexuals. Sorry to offend you. So, under this law, we can still have history. Just not rational history.

But back to my point, and I ask it in genuine bewilderment. How can ANYONE not think that this legislation is anything but absurd and harmful to everyone it affects. Thats what I dont understand. And it applies to everything; Immigration - why wasnt this insane situation stopped 3 presidencies ago? Gas/Energy situation - is anyone actually surprised we are paying $3.00 a gallon at the pump? Come on, people have been predicting this for decades. No rational person can be surprised. Theres that word again.

In answer to the question, let me say that the greatest strength of our governmental system lies in the fact that every citizen has a voice. Every citizen has a vote. But herein too, is the greatest deficiency of our system, and our greatest peril. For when every man has a vote, then all that is required by one who would work great evil is to convince the masses that that which is evil is not really evil. Our Founding Fathers believed that Democracy would only work if founded upon two principles: Religion, and Education. Once the people become corrupt or misinformed to a certain degree, the whole thing falls apart.

So whenever I get discouraged about the state of things, I am reminded that the answer to our dilemma isnt sweeping legislation, or some new policy in our government. You see, democracy can only work in a society of righteous individuals; and thats the crux of it all. The proper programs, institutions, laws; these are important. But the system will work if and only if the people uphold moral principles in thier personal lives. No combination of other factors, taken together or singly can save or doom our society.

Wednesday, May 24, 2006

Usability

I was just reading a post from Creating Passionate Users comparing good usability to "water flowing downhill". In a nutshell the post is talking about making the right things easy and the wrong things hard -- making the right things natural, like "water flowing downhill". They have quite a few examples, here's one:
Defining what your code should do should be challenging. Figuring out which API methods will give you that capability should be simple.
And the quote I really enjoyed is:
Playing the game should be challenging. The interface should be brainless.
I'm not the best user interface designer, but I also don't think I'm the worst. I haven't always been too fond of creating interfaces, I like working "behind the scenes". Creating a good framework or API and seeing it used successfully is great. I've been doing more framework/API design and implementation lately and have really been enjoying it. I have also been doing a lot more UI work lately and always feel like it isn't quite there yet.

Anyway, I've started (I opened the cover) reading Don't Make Me Think by Steve Krug. It's supposed to be really good. Hopefully I can learn some good stuff on UI design from it. Every developer should be good at interface design, be it web, forms, API, framework, ect.

Tuesday, May 23, 2006

Asp.Net Nested Master Page Error

I was working on a website today using nested master pages and suddenly started getting the following error:
'asp' is an unrecognized tag prefix or device filter
It was very odd. One minute the page was fine, the next it was broke. I tried to restart Visual Studio, but still the same error.

After searching around, I finally found this article on MSDN that talks about the error when using nested master pages. Basically if you are using nested master pages, the master pages must also be open at the same time. Weird, but it fixed the problem.

Just something I thought I would pass along.

Wednesday, May 17, 2006

HTTP Debugging

I was just reading Jeff's post about Fiddler and it reminded me that I was going to say a bit about it. I think Fiddler is great. It has been especailly useful for me lately while debugging some AJAX calls using Atlas. I was able to track down several of the problems I was experiencing in no time at all. I also used it to help a co-worker today debug something. Anyway, great tool and I highly recommend it.

Tuesday, May 16, 2006

Egoless Programming

Okay, this was a great read about something I've never really thought much about. In the post he quotes a book by Jerry Weinberg titled, Psychology of Computer Programming. In the book the author talks about "Egoless Programming".
Egoless programming occurs when a technical peer group uses frequent and often peer reviews to find defects in software under development. The objective is for everyone to find defects, including the author, not to prove the work product has no defects. People exchange work products to review, with the expectation that as authors, they will produce errors, and as reviewers, they will find errors. Everyone ends up learning from their own mistakes and other people's mistakes. That's why it's called egoless programming. My ego is not tied to my "perfect" or "imperfect" work product. My ego is only tied to my attempts to do the best job I know how, and to learn from my mistakes, not the initial result of my work.
The last sentence is what really caught my attention. In the post, Jeff talks about the problem that I also have -- I care too much.

I really like the idea of having the team review each others code in a attempt to find errors. We all want the same thing -- better software. Why do I let it bother me so much to be told my code is "buggy"? Why don't I take the opportunity to learn from my mistake? I think I do learn from my mistakes, but I know it would be much more beneficial to me if I didn't take offense to the errors in my code. The errors are going to be there anyway, why not take them as an opportunity to learn and improve the software?

I think I might try doing this more on my current projects.

Software Project Failure

I was reading a post about software project failure today. It just so happened that earlier today I was pulled into a meeting with a project manager and a VP about one of the projects I am working on and am the "team lead" on. They wanted an update on our progress. I must confess that I haven't been doing too good of a job of keeping the whole team, including the PM, up-to-date on the progress of the project. I guess I just assume that everyone knows where we're at... We do have bi-weekly status meetings, but they are "lacking" to say the least.

Honestly this is the first project I have had any sort of management role in. I really don't enjoy it at this point, I would rather just be a coder doing my own thing (my part of the project). I don't want to fail in this role on the project though -- although I can't help but feel like the project is heading towards failure. Maybe I shouldn't say failure, but I really don't see it happening anywhere near the scheduled completion date.

There are a lot of reasons I feel like that, most if not all can be found in this article about classic mistakes on software projects. I am going to send this link to several people at work. Hopefully being aware of these mistakes will help us -- including myself.