The concept of “disabling” a user interface element seems like a good idea to let users know that a particular action is not available. The problem is that most implementations made a disabled element completely dead and unreactive. This is a problem for any user learning to use the program. The dead element gives no indication of why it is dead. There is no way for the user to find out! The user just has to “just know” why it is dead. The most important aspect of a good user interface is that it help people learn how to use it, and that means eliminating things that users have to “just know” ahead of time. Such elements should never be completely dead, instead, they should produce a message explaining why the function can not be used at that time. Continue reading
A “Comma Separated Value” file is a pretty simple and straightforward concept. You have N values on a line, each separated by a comma. Obviously you have to do something special if the value has a comma or a CR character in it, and that is to put them in quotes, and that means you have to handle quote characters specially. CSV are so common that many times have gone to look for a standard library to read them.
What I find in standard libraries are things that are so complicated, that in order to use the library you have to write a lot of code … actually almost as much code as you need to parse the CSV in the first place. At the bottom I list a few such offering and why they are so wasteful. Before that, I will put my entire implementation here. A class so short and concise that I can put the entire thing in this blog post. Here it is: Continue reading
A friend referred me to this excellent article about preparing for system disaster: Resilience Engineering: Learning to Embrace Failure. This is related to a theme I have been calling “robustness”. Continue reading
Today’s post is a reflection on a classic misunderstanding often made by people who don’t understand how software is produced. This misunderstanding can be particularly harmful when held by management making decisions on team structure. The full quote is: “We don’t need any programmers here. There are plenty of programmers in India. Here, we just need people who can tell programmers what to do.” Let me explain why this is a classic management mistake. Continue reading