Tuesday, August 15, 2006

Philanthropist - Social enterpreneur

I happened to read an article in Reader's Digest Canada, September issue. It's about philanthropists and social enterpreneurship that is gaining popularity. It is very encouraging to me. This is the kind of work I would like to get involved. I want to work for good. For example, I want my work to contribute to protecting environment. Working just for money at money making business doesn't motivate me at all.

The article covers the stories of Social Venture Partners (SVP) Calgary Chapter and Brad Zumwalt, Social Capital Partners and Bill Young in Toronto, Inner City Renovations in Winnipeg, Community Foundation of Ottawa and its Engage! program by Coralie Lalonde (also Volunteer Ottawa), and The Maytree Foundation and Alan Broadbent, especially its The Mentoring Partnership program.

There is a course about Social Enterpreneurship at University of Alberta, Duke, Stanford, Harvard, Oxford, and IESE Business School, the article says. University of Toronto is also starting a new course this fall.

Also the article mentions the comments by Gary McPherson, executive director of the Canadian Centre for Social Enterpreneurship at University of Alberta.

Maybe acquiring business skills in this area is a good idea. I have always thought of acquiring business skills and learning how private sector business operates, just to understand how things are going. But I didn't have enough motivation to cut my time to work on computers in order to take courses about them.

I feel very good that there are people who have same mindset as I do who want to work for good cause.

Tuesday, August 08, 2006

Sarcasm is useless and harmful

Sarcasm doesn't allow the person who were told it to express his/her point of view.
In order to understand the action of the person, you need to understand his/her point of view. By communicating with him/her and creating a dialog, you can understand what is actually happening.

Human behavior or emotion is very difficult to guess. Even in the controlled psychological lab environment eliminating as many unrelated factors as possible, it is difficult to pinpoint the causality of the behavior, emotion, or reaction. In the real world environment, it is almost always true that the observer's experience, emotion, knowledge, etc. biases the observation. Not only that, the person who is being observed behaves differently depending on the circumstances he/she is in. So it is certain that the observation is wrong. Hence, sarcasm is useless, which is solely based on the observer's point of view.

Also sarcasm makes the topic appear to be more important than it is at the moment. Even when there is another important thing that is worth, say, 80% of the person's attention - e.g. software code that is used 80% of the time, etc. - if somebody says sarcasm about a topic that is worth only 20% of attention, that topic gets the major attention or even exclusive attention. That's harmful.

And if the person who is told sarcasm says something back, all the person who said sarcasm has to say is that he/she not talking about the person who is told sarcasm. In other words, the person who says sarcasm doesn't take a responsibility of what he/she says. So often times, the sarcasm is ignored by the person who is told the sarcasm. Who would take a comment seriously made by somebody who is not willing to take a responsibility of the comment? That's another reason whey sarcasm is useless.

Life without using sarcasm is much tougher and requires intelligence and discipline, which is the opposite of some people's belief that using sarcasm is a sign of smartness. And life without sarcasm is much more productive and fulfilling.

Friday, August 04, 2006

Thin slicing and snap judgement on software - Blink and Smell

I've been listening to an audiobook, "Blink" by Malcolm Gladwell recently.

I just wondered if we can judge software quality by thin slicing and snap judgement. Martin Fowler uses the word, "smell". I even saw him holding his nose saying, "Oh! It smells!" looking at a code at one conference. I think we can extend it to see a positive sign of software quality, maybe browing a word from "Blink".

One thing I found from my past experience of looking at other people's code is that the code that is well formatted and that is following some convention - i.e. easier to read, has higher quality, whereas the code written by people who don't care about any of them tends to have lower quality. And it doesn't take long to sense it.

I don't claim that this kind of judgement is accurate or anything. But I think it's interesting to explore it.
(By the way, of course, I write test first and the main judgement should be done by running tests.)

Turning wrong snap judgement into positive

Malcolm Gladwell said in the Epilogue of his book, "Blink", that he was inspired to write the book by a wrong snap judgement and stereotype of a police officer who doubted him. I wonder how he could come up with a positive idea out of a negative experience that is completely because of other people's fault. I just wonder if I could do the same thing. At least, my recent experiences led me to read (actually listen to the audiobook of) "Blink" again.

Thursday, August 03, 2006

JMock: JUnit4 support without extending MockObjectTestCase

Back in early June, I submitted a code for JMock to support JUnit 4 without extending MockObjectTestCase.
http://jira.codehaus.org/browse/JMOCK-97

Recently, one person wrote a comment that it has been very helpful in his project.
I appreciate his comment very much and I am glad that the code is helping his project.

I wasn't expecting that the code would be used before it is added to the main jMock distribution. But since it may take a while for that to happen, I added a jar file also so that the code can be used immediately.

I use Eclipse. If I extend MockObjectTestCase and use JUnit4 annotation to indicate Test methods as one jMock mailing list thread says to get around the problem of using JUnit4 with jMock, Eclipse complains that no test method is found. It is because MockObjectTestCase extends the old JUnit TestCase class and Eclipse simply assumes that I am executing the old JUnit TestCase (3.8.1). Eclipse looks for a method prefixed with "test" in that case. And my test method using JUnit4 is not prefixed with "test" any more. (I use the method name to describe behavior.)
So my code for supporting JUnit4 without extending MockObjectTestCase is helping me very much as well.

Monday, July 31, 2006

Wisdom of Crowds, etc.

Group of independently thinking invididuals is smarter than the smartest person in the group.

The whole is greater than the sum of the parts.

I just want to write them here quickly because I have wanted to write about it for quite a long time but haven't had a chance to do so.

Wednesday, July 26, 2006

What I like about Ruby - one of many

I like that Ruby has a convention that is enforced about instance variables (member fields) and class variables (static member fields) i.e. @ and @@.

I introduced a similar convention recommended by somebody I met at one of the Java Users Groups when using Java in several occasions before. At one company, it was embraced. But at another company, it just sparked unnecessary discussion. It seems that experienced developers use a similar convention, one way or another. And it seems that less experienced developers oppose it for a peculiar reason.

So I like this Ruby's feature so that we can focus on writing a code that brings a value to the customer or user, instead of spending time arguing about the convention.

Sunday, July 23, 2006

Lean Software Development and my current software development

I'm reading a sample chapter of "Lean Software Development."

The elevator designer's example says that unstructured approach cycling between high-level design and detailed solution was necessary.

Somehow my experience that is not necessarily related came back in my head. When I tried to put off working on a derived idea in order to finish up the task at hand, I am not necessarily productive. When I wandered around to try out a derived idea, actually overall productivity was higher. So it is a development or research activity instead of production activity.

I just wanted to write this down before continuing to read the chapter.
So this blog is still in draft.
I think I'm going to edit this quite a few times.
Let's see how it goes.

Monday, July 17, 2006

The Future of Human-Computer Interaction

I read an article on ACM Queue magazine (Vol.4,No.6) about Human-Computer Interaction (HCI) - "The Future of Human-Computer Interaction", John Canny, University of California, Berkeley.

It was eye-opening.

The current user interface is optimized for the office environment. For the devices that are getting increasingly popular, such as a smartphone, the user interface should be optimized for a completely different environment. Instead of changing what is displayed based on the user's input such as button click, it should be changed based on the context, such as the user's current location, because those devices are not good for accepting user's input graphically. And those devices are designed to be used by speech, the interaction should be based on perception such as speech-based interfaces.

Makes sense.

Wednesday, July 12, 2006

An Inconvenient Truth

I watched Al Gore's documentary film, "An Inconvenient Truth" yesterday.
It was a very good movie. I was motivated to do something to contribute to solve this problem.

At one point in the movie, Al Gore talked about the balance between environment and economy. In addition to what he said, I think that it's important to point out that if you can purchase the same product with less money, you don't have to earn more money by destroying the environment. So we can make the way we produce the goods/services more efficient, demending less natural resources and using renewable energy source. That makes the relative living standard go up with the same income we earn. Then we don't necessarily need a better economy in order to survive.