Thursday, 26 May 2011
Sunday, 22 May 2011
People keep on telling me that I shouldn't get upset about others in my industry who simply couldn't care less what they produce.
Apparently, people have different priorities.
The thing with priorities is that you are choosing to order the importance of several things. That does not automatically imply that there is only one thing that is important to you. People with children who work a day as a software engineer and do a good job, do not implicitly hate or undervalue their children. Those of us without children don't just have lives full of work and nothing else.
In fact, people with diverse interests and hobbies are often very good at their jobs because their lives are more balanced.
You can have multiple things that are important. That is the whole point of context. When you switch contexts, the focus changes. There is nothing lost in other contexts. It is not as though you love the other less. You do not have to choose.
There is one guy in Darwin who sparked this rant. He goes to work. He goes home. He doesn't put in any extra effort. He always asks why he has to do something out of his usual routine. He doesn't see the point of collaboration, information sharing, reuse of anything, or exerting any more effort than it takes to not fire him.
Working with him was difficult because he would resist the whole way. It was passive resistance. I always came across as a French marine dragging a Green Peace supporter from a boat. It makes those of us who care look like zealots, when all we want is for people to make the effort they are paid for.
What we do is an important job. We are professionals. We get paid well .We have a responsibility to give a good service.
If you don't want to contribute then you should go dig ditches. Get the hell out of programming. You are lowering the standard.
Monday, 9 May 2011
You have to understand that ASP.NET naming containers exist and what they change about a page. This affects client side and server side code and often kicks my a** when I forget that I am in one.
A naming container is a marker interface (INamingContainer), meaning that it does not implicitly enforce the hierarchy of controls under it but does create a naming scope for all contained controls.
Any controls that exist inside the naming container have their Ids altered at runtime with a prefix to ensure they are unique and belong to the context of the parent container. When you see a control with a name like TextBox1 change to ct100_xxxxxx then you know that it's in a naming container and has had a naming adjustment. This can make client side scripting a pain but there are many hints around on the web to help you cope with that.
The naming containers you will be most familiar with are master pages, content place holders and data bound controls like GridView.
My latest bottom kicking came when I was using fluent validators that wanted my validation specification to sit in the same naming comtainer as the controls it was validating. I chucked it at the top of the user control and the validation specification wasn't found. Not finding it as a sibling to the controls meant that validation just wouldn't happen. There was no error.
This makes sense when you are implementing server side code that looks up to a certain level in the hierachy to find an optional element on the page.
The thing is to know what your naming containers are and where you should place things.