Know more and connect with me on [Linkedin Profile].

Saturday, April 28, 2007

Code Reviews Considered Hurtful!

Code Reviews Considered Hurtful, why?

First, read this link from extreme programming website:

The same principle applies to any project artifact review, whatever it is requirements document, design document or plans. What is we should stress is collaboration on the artifacts with all involved people and all people who could give feedback per their role or experience in the project or similar projects. I wonder why we should replace collaboration with criticism which will lead to non objectivity in most cases.

Per the Agile Manifisto, where people and interactions are given more value over processes, stick to value people and collaboration over criticism. Detect any problems early while creating the artifact other than delay it to review after its creation. By doing so, you will foster a collaboration environment other than a bureaucratic process followers.

Reclaim Your Emails and Address Book!

Reclaim your emails:
I am using gmail for 3 years until now, I am even poping other accounts inside gmail. It gave me consistent view to all my email. I also liked the conversation view very much. But wait, all my data is there, if my account is stolen, all my emails can be misused. I moved back again to read my email using Thunderbird.

1) I am poping all my emails and not leaving it on the server. I am using always my laptop so my data is always with me. Even if you read emails from several machines, you can make the master machine to remove emails from the server while other machines to leave emails on the server. This is not necessarily perfect as accessing it on the gmail, but my priority is to reclaim my data again.

Hundreds of megas and thousands of emails are poped from gmail, a lot of data that should be destructed as it is out of context, gmail wonder why I should every delete emails as I have more than 2 Giga of storage!

Another added benefit from reading my email to my laptop is the contribute ability I have with any open source project like Thunderbird, can you get this benefit from gmail?!

2) I feel a little safe from the risk of my emails gets compromised by security agents or hackers. I have no high security needs but I feel better with it.

Reclaim your Address Book:
I am convinced now to have separate two address books, the one that focused on voice conversations on my mobile and the other that focus on emails and web addresses on My Thunderbird Contacts. Each has its own objectives and limitation.

So now, I am happy I have reclaimed my emails and my address book, but I am making CD backup weekly to protect my data from a corrupted hard disk.

Wednesday, April 25, 2007

So, you want to learn Bookkeeping!

Several years ago, when I was studying stating my own business, I researched to learn the basics of bookkeeping, The tutorial of Dave Marshall helped me a lot.

I advice everyone to have a little understanding of bookkeeping (at least).

CMMI 1.2 Process Areas Table

I like this table which map CMMI process areas in two dimensions, the first is the level and the second is the process type.

Level/Process Category




















Sunday, April 22, 2007

CMMI, Process Should Be Documented at Level2!

Many people think that if you are at CMMI L2, you don't have to have process description. They believe process description is required only in L3.

Absolutely, this is not right. If you look at the Reference Book, at GP2.2 text title "Establish and maintain the plan for performing the process", think a little and remember CMMI is a model not a process, it does not describe exact activities to be done, so don't depend on it as a process. The point is how could you plan the project without knowing the activities done in planning. However the model doesn't leave us to conclude, it states in "Generic Goals and Generic Practices" chapter the following:

"The plan for performing the process typically includes the following:
• Process description
• Standards and requirements for the work products and services of the process
• Specific objectives for the performance of the process (e.g., quality, time scale, cycle time, and resource usage)"

It even states to have measures for the process, stated in the plan:
"Measurement requirements to provide insight into the performance of the process, its work products, and its services"

So prepare a process description and include the level of detail that is suitable for the project, and each project could have his own process description that is suitable to the project type and size. At level 2 you don't have to have organization wide process repository and a
tailoring guidelines, this is required in level 3 and above.

Friday, April 20, 2007

New Ubuntu and Thunderbird

There are two important open source release, here are the links:

1) Ubuntu 7.04

2) Thunderbird 2.0

We are the Web

Do you want to understand what is going on on the Web? What is meant by "Network is the computer"? What is blogging and social networking and how these could affect our lives in the next decade?

Watch it:

Watch it several times, you may stop the music to concentrate on the content.
Still did not get the point, read We Are the Web. Although long but deserve reading.

These clip also could help gain better understanding.

Thursday, April 19, 2007

I am a Little Angry, Stop Emailing and Pickup Phone or Schedule a Meeting

Although I love to respect all people I deal with and very rarely hurts anyone in speech over phone or in a face to face meeting, sometimes I miscommunicate using emails.

As example, If I am making 100 voice conversation, I may go wrong just once. If I am making conversations through emails, I guess I may make 20% bad emails. Why?! This is actually annoying me to the extent of thinking to stop emailing unless really necessary and depend instead on phone.

While browsing my favorite blog feeds, I saw a blog that describes what I was thinking of. Enjoy it in the following paragraphs:

Send: Why Good People Send Savage Emails

By Will Schwalbe — Even the most placid soul can find her or himself in the midst of a full-fledged, take-no-prisoners flame war. One minute you are scoring a minor point, then a few more emails go back and forth, and soon you are choosing the perfect vicious barb to complete an angry screed.

We all know jerks who live for this kind of angry exchange. This post is not for them. This is for those of us who would rather not spend our lives composing savage emails - and who realize the enormous danger they post to our careers. One livid email, especially if taken out of context, can seriously damage your reputation.

Recently, a distinguished UK television producer wrote an angry email to her staff when they had neglected (or purposefully forgotten?) to ask her to sign a birthday card that was to be presented to one of the employees. That peeved email is now enjoying a very active and healthy life online and in the UK press. Perhaps some major aggravation was the spark for the boss’s intemperate email outburst? No one will ever know or really care. The birthday card email lives on forever.

So why do angry email exchanges happen to even placid souls?

Harvard psychologist Dan Gilbert, author of Stumbling on Happiness, wrote the following New York Times Op-Ed about conflicts around the world. It seems to apply equally well to the subject of flame wars.

“In a study conducted by Sukhwinder Shergill and colleagues at University College London, pairs of volunteers were hooked up to a mechanical device that allowed each of them to exert pressure on the other volunteer’s fingers.

“The researcher began the game by exerting a fixed among of pressure on the first volunteer’s finger. The first volunteer was then asked to exert precisely the same amount of pressure on the second volunteer’s finger. The second volunteer was then asked to exert the same amount of pressure on the first volunteer’s finger. And so on.”

The results were fascinating. The researchers reported that the volunteers typically responded with 40 percent more pressure than they had experienced. Concludes Gilbert:

“Each volunteer was convinced that he was responding with equal force and that for some reason the other volunteer was escalating. Neither realized that the escalation was the natural byproduct of a neurological quirk that causes the pain we receive to seem more painful than the pain we produce, so we usually give more pain than we receive.”

Moral of story? For preservation of your job, your business relationships, and your friendships - next time you find yourself in a situation where the emails are flying fast and furious, do consider that you may be as responsible for the escalation as the other party. When you feel your temperature rising, it’s a good sign that it’s time stop emailing and, perhaps, to pick up the phone or schedule a meeting or just let the issue go. Unless, of course, you want your version of the birthday card email to appear on the nightly news. In that case, in the immortal words of Clint Eastwood: “Make my day.”

Defect tracking tools and waste

Defect tracking tools and waste

Defects are waste. User stories with known defects aren't done and can't be released, they're partially complete work or inventory, and they are waste too. If you're using a defect tracking tool you're queuing up waste and you're inspecting for quality after the code's been written.

Eliminate waste. Avoid queues because they prevent throughput of released software and block the flow of value to the customer. Build quality into the code from the start by fixing defects as you go. To help improve the quality of code, developers should use test-driven development and testers should perform exploratory testing as developers complete vertical slices of user stories. If a defect is found, stop the line and fix it immediately. Don't queue it up.

ahammad notes:
I like this post very much. I like thinking outside the box. Many times we treat our problems as a fact of life. This must end and we should strive to solve our problems. This is why I like the idea of ISO that stress on each defect to has a corrective action and a preventive action. This idea alone could let organization improve very rapidly.

One of the interesting ideas of Lean Thinking is the focus on the principles, focus should be continue to be on the source code. So you stress to develop automated testing even before the development of the task begin. The automated test say the test is failed. Then you develop the code to pass the automated test cases. This is test driven development.

As a programmer, I like the idea to write even your docs in your code! Why not write the design inside the source code comments and with the help of tools you can generate class diagram and documentation automatically from your code. Want to see, try doxygen. It is full featured, reliable, free, and open source.

Even code comments should not be waste. It should be concise, to the point and is not redundant. If you can rename a method or class to be easy to understand without any comment, do it. Comments are not an objective in its own sake, if it does not add real value, it is a waste.

Put customers first and everything else follows

Put customers first and everything else follows

W Edwards Deming said something like:
The real purpose of a company is not to make money, but to create customers who are so pleased that they will continue to buy products.
Don't fixate on sales figures and profits. Get your relationship right with your customers and end-users and everything will follow. Work from the outside, in. Continuously collaborate with your customers and end-users. See everything from their point of view first. Understand value from their perspective. Have your efforts be driven by your customers and end-users. Ask them what they want next and let their requests pull you ahead of the competition.

This is very basic, I see many cases of failures to serve customers well, whatever the customer is a colleage or external to the organization, the same principles should apply.

Sunday, April 15, 2007

My Second CMMI L2 Appraisal

Here are the lessons I have learned from my second CMMI L2 appraisal, not all of them are technical:

1) Let actions speak about you and don't speak about yourself; doings are more respectable than sayings. Most people hate who speak much about themselves.

2) Dictatorship: If you are a team leader and unable to facilitate team discussions or reach consensus, this usually reflect your dictatorship style or the mentality of win-lose. As a team, everyone must focus on win-win relationship. We should believe we are strong because we are different and being different means we have a great chance of building integrated vision.

3) Treating people should be smooth, not just when things are easy but also with hard issues and when we feel angry. IMHO this is the measure of person kindness and professionalism.

4) You can always ask people for annoying things as long as you treat them with great respect and let them understand your intention. As example, if you in a critical meeting, you can ask a person to leave the room, or to turn off mobiles as long as you say it properly. On the other side, some people feel great when they have the chance to hurt other people.

5) CMMI interpretation is quite flexible, you can tailor it greatly. Remember that CMMI is a model not a process. You can use this feature to hurt your business or to help it.

6) Using tools improperly can lead to a very complex baseline taking and reconstruction. So always use tools the right way.

7) Tools come with their own complexity. Use sophisticated tools only to solve complex problems. Generally use the simplest tool that is good enough to manage your current problem. Use the right tool for the right task.

Saturday, April 14, 2007

NetBeans Visual Web Pack 5.5

I was dreaming of an open source Java development tool that let Website programming much easier and mostly visual, this will help juniors and beginners to start developing applications faster. I was dreaming of something like .Net environment, or the Borland DELPHI, but open source of course.

I am very happy to say that tool is already exist, I tried it and it proved very successful. It is the Popular Java tool NetBeans, with the Visual Web Pack.

Download Netbeans, and then the Netbeans Visual Web Pack, many tutorials are exist to help you start very fast, look at

All tutorials are full of screenshots and there are many blogs that share Netbeans experience with everyone. The help exist with the default setup is also very helpful.

It works a little slow on my 512M RAM machine (but OK, it worked just good enough), I think it will be very smooth and fast on 1G RAM.

Remember, everyone needs web development, even for inhouse website to improved knowledge sharing and workflow automation. Try it and share your experience with the world.

Wednesday, April 11, 2007

Task Coach, Gaim (Pidgin), and Subversion Feeds

Task Coach
Screenshot Task Coach is a simple todo manager to manage personal tasks and todo lists. It grew out of a frustration that well-known task managers, such as those provided with Outlook or Lotus Notes, do not provide facilities for composite tasks. Often, tasks and other things to do consist of several activities. Task Coach is designed to deal with composite tasks.

It see full features, try it.

GAIM Chat Client
It is a multiplatform tool that can interface with all popular chat systems like hotmail, yahoo, gmail, AOL, ...
Imagine you can access all your chat accounts from ons tool. I use it and it is worth trying.
Recently Gaim changed there name to be Pidgin, but everything else is the same.


SVNFeed is a Python script that creates RSS feeds of Subversion repository logs. Both remote and local repositories can be monitored. It is helpful to use your favorite Feed Reader product/service to watch source code changes.

Tuesday, April 10, 2007

Download Wikipedia Encyclopedia

Download Wikipedia Encyclopedia

Download full Wikipedia DatabaseDo you know that it is possible to download the entire Wikipedia Encyclopedia to your computer and use it offline. See the click above.

Saving YouTube Videos

How To Rip Audio from YouTube Videos

Directly from Youtube - The FLV Online Converter at can take Youtube Video URLs and provide you an MP3 audio file of the YouTube video [via].

Extract Audio from FLV files - If the Youtube Video is on your hard-disk as an FLV video file, try the free FLV Extract utility that extracts video and audio from FLV files. The video is saved to .avi and the audio is saved to MP3.

New Releases of Open Source Projects


Dimdim is the Open Source web conferencing company. With Dimdim you can show Presentations, Applications and Desktops to any other person over the internet without installing anythign on the Attendee side. You can chat, show your webcam and talk with others in the meeting.

TCExam 4.0.011 Released!

TCExam [] is a Web-based Assessment Software system (e-exam or CBT - Computer Based Testing) that enables educators and trainers to author, schedule, deliver, and report on surveys, quizzes, tests and exams. The software is used all over the world by universities, schools, companies and independent teachers.

Buddi 2.3.2

Screenshot Buddi is a simple budgeting program targeted for users with little or no financial background. It allows users to set up accounts and categories, record transactions, check spending habits, etc.

YaHP Converter 1.2.3

YaHP is a Java library that allows you to convert an HTML document into a PDF document.

FBReader 0.8.1d (Default branch)

Screenshot FBReader is an e-book reader. It currently works on the Sharp Zaurus, Siemens Simpad with Opensimpad ROM, Nokia 770/N800 Internet Tablet, Archos PMA430, Motorola E680i/A780 smartphones, PepperPad 3, IRex iLiad, and Linux/Windows XP i386 computers. It supports several e-book formats: plucker, palmdoc, zTXT, HTML, CHM, fb2, TCR (psion text), OEB, OpenReader, RTF, non-DRM'ed Mobipocket, and plain text.

Wednesday, April 04, 2007

Boot Your Computer Faster

My machine is very slow especially at startup, many tools uses my tray and they provide no way to delete. Even if I tried to uninstall, some refused!

Here how to get rid of them, at least the annoying. Open Start Menu, in the Run editor, type RegEdit.exe and hit enter. (very long way to say run regedit!)
Browse the keys to reach the following path:

Review the and make sure to remove only unwanted entries. Be careful, registery changes are not for beginner users.

Sunday, April 01, 2007

No More Quality Initiatives

This post is copied from:

About 6 month's back we [Microsoft Visual Studio Team System] hosted a meeting of our customer advisory council. This is a hand picked group of people who help to steer our product. They all know who they are, so I don't need to name names. Many of them read this column regularly. Back then I was soliciting input for our "formal" methodology. During this session, one of our advisors urged me to avoid giving "us yet another quality initiative. We've tried them all and people are tired!"

And so, I'm sure he'll be delighted to hear me say, "Quality initiatives! Just say no!"

The problem with quality initiatives, and their champions, and their change agents, and their sponsors, and their improvement projects and their quality teams and process experts and black belts and green belts and funny handshakes and secret rituals and coded handbooks and group hugs and therapy sessions is quite simply that the improvements don't last. When the black belt goes home, and everyone breathes out, the regular work force go back to their same old behavior.


Plain and simple - quality and continuous improvement are everyone's business. It's an everyday thing for every employee. Everyone should understand variation and specifically understand how to measure and interpret the variation in their inputs, their rate of input, their working method, their lead time and their rate of output. Eliminating special cause variation should be everyone's business, every day. Reducing common cause variation should be everyone's business every day. Suggestions for improvement could come from anyone, any time and be implemented by a local consensus on the shop floor. No need for a central process improvement group or sanction from an ivory tower full of process priestesses.

That's why in MSF for CMMI(R) Process Improvement, I've included daily standup meetings to surface issues and monitor and manage risks, eliminate special cause variation and make it everyone's business to do so. That's why we're dropping conformance to plan and conformance to specification in favor of conformance to process and focus on variation reduction. That's why we're encouraging a bottom up, empowered team, consensus model. That allows decentralized decisions to be made quickly. The way to institutionalize continuous improvement across an organization is to make it everyone's business, every day! The way to deliver an agile process which meets both the original spirit of the software CMM and the letter of the CMMI(R) appraisal model, is to distribute the quality responsibility at grass roots level across the whole organization. Everybody, every day allows quality and agility to walk hand in hand.

This post is copied from:

JSPWiki 2.4, a Much Improved Wiki

Today I tried JSPWiki 2.4, it is much improved version, here is a brief of some of the new security features:
  • Wiki-level and page-level privilege control.
  • Security can be applied to individual users as well as to entire groups.
  • Authentication: simple XML file-based, database-based, container-managed and custom authentication modules can be used.
  • Authorization: security policies and ACLs can be applied to authentication status (anonymous, cookie-based, authenticated), container roles or ad hoc wiki groups you set up yourself

Also, the editor is improved and have the option to use a GUI editor that is based on Java, my FireFox 2.0 worked with it without problems.

It is extremely easy to install, you just drop the war file in the JSP server webapps directory. JSPWiki by default uses no database, it stores all pages and attachments in the file system, you can install a pluging to use MySQL dbase.

I used it for more than 2 year and it was very reliable and helpful, so I encourage everyone to use it. You can use it as a personal knowledge base or as a department knowledge base.